如何删除“bind_rows”引入的data.frame中的冗余列?
我在列表中有两个data.frame,它们具有不同的列,我打算将它们合并到一个data.frame列表中,并且我使用了如何删除“bind_rows”引入的data.frame中的冗余列?,r,dataframe,R,Dataframe,我在列表中有两个data.frame,它们具有不同的列,我打算将它们合并到一个data.frame列表中,并且我使用了SO中的现有解决方案。是的,dplyr函数工作得很好,但是bind_rows引入了拆分所需的额外列。但是,我希望在拆分单个data.frame后继续管道,以便同时删除每个data.frame中的冗余列。我尝试使用select来取消该列,但不起作用。是否可以继续我的管道来删除列,而不是使用另一个lappy来执行此操作?我怎样才能做到这一点?有什么想法吗 这是我需要合并然后拆分的da
SO
中的现有解决方案。是的,dplyr
函数工作得很好,但是bind_rows
引入了拆分所需的额外列。但是,我希望在拆分单个data.frame后继续管道,以便同时删除每个data.frame中的冗余列。我尝试使用select
来取消该列,但不起作用。是否可以继续我的管道来删除列,而不是使用另一个lappy
来执行此操作?我怎样才能做到这一点?有什么想法吗
这是我需要合并然后拆分的data.frame列表:
DF <- list(
hue = data.frame( begin=seq(1, by=6, len=10), end=seq(4, by=6, len=10), val=sample(30, 10)),
ack = data.frame( begin=seq(3, by=9, len=8), end=seq(6, by=9, len=8), val=sample(45, 8)),
ken = data.frame( begin=seq(6, by=8, len=6), end=seq(11, by=8, len=6), val=sample(52, 6))
)
MF <- list(
hue = data.frame( begin=seq(11, by=6, len=7), end=seq(14, by=6, len=7),
val=sample(30, 7), cmb.val=sample(24, 7)),
ack = data.frame( begin=seq(13, by=9, len=5), end=seq(6, by=9, len=5),
val=sample(45, 5), cmb.val=sample(18, 5)),
ken = data.frame( begin=seq(16, by=8, len=6), end=seq(21, by=8, len=6),
val=sample(52, 6), cmb.val=sample(20, 6))
)
DF我们可以使用map
library(purrr)
bind_rows(DF, MF, .id = "GRP") %>%
mutate(cmb.val = ifelse(is.na(cmb.val),0,cmb.val)) %>%
split(.$GRP) %>%
map(~.[setdiff(names(.), "GRP")])
#or with `select`
#map(~select(., -one_of("GRP")))
我们可以使用map
library(purrr)
bind_rows(DF, MF, .id = "GRP") %>%
mutate(cmb.val = ifelse(is.na(cmb.val),0,cmb.val)) %>%
split(.$GRP) %>%
map(~.[setdiff(names(.), "GRP")])
#or with `select`
#map(~select(., -one_of("GRP")))
您可以将lappy()
与select()
组合,如下所示:
bind_rows(DF, MF, .id = "GRP") %>%
mutate(cmb.val = ifelse(is.na(cmb.val), 0, cmb.val)) %>%
split(.$GRP) %>%
lapply(select, -GRP)
您可以将lappy()
与select()
组合,如下所示:
bind_rows(DF, MF, .id = "GRP") %>%
mutate(cmb.val = ifelse(is.na(cmb.val), 0, cmb.val)) %>%
split(.$GRP) %>%
lapply(select, -GRP)
只需添加%%>%lappy(选择,-GRP)
?只需添加%%>%lappy(选择,-GRP)
?亲爱的akrun,谢谢你的绝妙创意。我们是否可以使用dplyr
函数代替purrr
?在这种情况下,不需要依赖另一个包。感谢you@Dan它与tidyverse
包列表一起提供。因此,如果您安装tidyverse,您将安装所有这些packages@Dan正如我在评论中提到的,您可以检查亲爱的akrun,是的,使用tidyverse
使软件包安装更容易。谢谢亲爱的akrun,谢谢你的好主意。我们是否可以使用dplyr
函数代替purrr
?在这种情况下,不需要依赖另一个包。感谢you@Dan它与tidyverse
包列表一起提供。因此,如果您安装tidyverse,您将安装所有这些packages@Dan正如我在评论中提到的,您可以检查亲爱的akrun,是的,使用tidyverse
使软件包安装更容易。非常感谢。