我希望采用包含NA
个值的54列的行平均数,而不必拼写每一列,即,我希望使用:
来 Select 我要使用的列:
data1 <- data %>%
rowwise() %>%
mutate(m = mean(c(A1:C3), na.rm=T))
然而,当我这样做时,我得到以下错误:
Error in `mutate()`:
i In argument: `m = mean(c(A1:C3), na.rm = T)`.
i In row 2.
Caused by error in `A1:C3`:
! NA/NaN argument
显然,na.rm = T
的论点没有被考虑在内?如果我拼写出所有列,即,
data1 <- data %>%
rowwise() %>%
mutate(m = mean(c(A1, B1, C1, D1, ...), na.rm=T))
但这非常乏味,如果没有必要,我不想写出54个列名.你有什么办法在tidyverse
人的世界里做到这一点吗?下面是它的重述:
data <- structure(list(SampleID = c(5, 6), StationID = c("ROC", "DAK"
), Date = structure(c(1127361600, 1347336000), class = c("POSIXct",
"POSIXt"), tzone = ""), A1 = c(100, 50), B1 = c(100, 10), C1 = c(100,
30), D1 = c(100, 10), E1 = c(100, 0), F1 = c(60, 20), G1 = c(60,
100), H1 = c(0, 10), I1 = c(40, 10), J1 = c(40, 10), K1 = c(100,
30), L1 = c(40, 20), M1 = c(40, 10), N1 = c(40, 10), O1 = c(100,
100), P1 = c(100, 0), Q1 = c(80, 10), R1 = c(100, NA), S1 = c(60,
10), T1 = c(100, 100), U1 = c(70, 10), V1 = c(70, 10), W1 = c(100,
100), X1 = c(100, 30), Y1 = c(80, 30), Z1 = c(30, 10), A2 = c(20,
20), B2 = c(60, 100), C2 = c(30, 50), D2 = c(100, 10), E2 = c(20,
0), F2 = c(30, 0), G2 = c(20, 30), H2 = c(30, 30), I2 = c(100,
60), J2 = c(0, 10), K2 = c(20, 100), L2 = c(100, 40), M2 = c(100,
40), N2 = c(100, 100), O2 = c(50, NA), P2 = c(20, NA), Q2 = c(40,
NA), R2 = c(40, NA), S2 = c(100, NA), T2 = c(30, NA), U2 = c(30,
NA), V2 = c(100, NA), W2 = c(100, NA), X2 = c(100, NA), Y2 = c(100,
NA), Z2 = c(50, NA), A3 = c(50, NA), B3 = c(50, NA), C3 = c(100,
NA)), row.names = 5:6, class = "data.frame")
还要注意,这里的列名是我用c(paste0(LETTERS[1:26], "1"), paste0(LETTERS[1:26], "2"), paste0(LETTERS[1:3], "3")
发明的列名,它们不是我的og数据的列名.