我有一个包含大量数据框的列表,结构如下:
foo <- 1:5
lorem1968 <- c(6, NA, NA, 8, NA)
lorem1969 <- c(NA, 17, NA, 19, 20)
df1 <- data.frame(foo, lorem1968, lorem1969)
ipsum <- 11:15
lorem1970 <- c(22, NA, 24, NA, NA)
df2 <- data.frame(ipsum, lorem1969, lorem1970)
df.list <- list(df1, df2)
[[1]]
foo lorem1968 lorem1969
1 1 6 NA
2 2 NA 17
3 3 NA NA
4 4 8 19
5 5 NA 20
[[2]]
ipsum lorem1969 lorem1970
1 11 NA 22
2 12 17 NA
3 13 NA 24
4 14 19 NA
5 15 20 NA
我现在想遍历所有名为loremxxxx的列,并将其中所有NA替换为0。然后,我想在每个df中创建一个新列,其中包含该特定df中包含的所有loremxxxx列的平均值。
问题是原始数据中存在重叠的面板,因此任何df1都包含lorem1968、lorem1969、lorem1970。df2包含lorem1969、1970、1971。依此类推。
我尝试像这样选择列:
lorem.cols <- purrr::map(panels.list, function(x)
select(x, starts_with("lorem"))
)
并且:
还有:
lorem.cols <- purrr::map(df.list, function(data)
data %>% select(data, starts_with("lorem"))
)
但是两者都出现了错误,要么找不到该函数,要么给我“Selection:”并等待输入。我只是试图从
select()
函数的帮助页面复制。
之后,我计划这样替换NAs:
df.list <- purrr::map(df.list, function(data)
data %>% mutate(lorem.cols = replace(is.na(lorem.cols), 0))
)
感谢大家!
lorem.cols <- purrr::map(df.list, function(x) dplyr::select(x, dplyr::starts_with("lorem")) )
- markhogue