R-如何根据变量增量列表在数据帧中动态添加列
我需要完成以下任务;你能帮我做这件事吗 我的数据帧R-如何根据变量增量列表在数据帧中动态添加列,r,dataframe,reshape,R,Dataframe,Reshape,我需要完成以下任务;你能帮我做这件事吗 我的数据帧 U_ID Value AD CT 1 list(`Cno`="50",`cna'="jhon") ia BG 1 list(`Cno`="20",`cna'="guna") AS DB 2 list(`Cno`="30",`cna'="rt",`c
U_ID Value AD CT
1 list(`Cno`="50",`cna'="jhon") ia BG
1 list(`Cno`="20",`cna'="guna") AS DB
2 list(`Cno`="30",`cna'="rt",`cf'="ty") BN FV
2 NULL VF TY
3 list(`Cno`="30") RR TT
我期望的输出是
U_ID Value Cno cna cf AD CT
1 list(`Cno`="50",`cna'="jhon") 50 jhon NULL ia BG
1 list(`Cno`="20",`cna'="guna") 20 guna NULL AS DB
2 list(`Cno`="30",`cna'="rt",`cf'="ty") 30 rt ty BN FV
2 NULL NULL NULL NULL VF TY
3 list(`Cno`="30") 30 NULL NULL RR TT
数据:
您应该使用:
splitstackshape::cSplit
函数。这是一个使用dplyr
的解决方案
library(dplyr)
dat %>%
mutate(idx = as.character(`is.na<-`(cumsum(Value != "NULL"),
Value == "NULL"))) %>%
left_join(filter(., Value != "NULL") %>%
pull(Value) %>%
bind_rows(.id = "idx")) %>%
select(-idx)
请提供一个可复制的数据框示例。您好。斯文,我已编辑数据框数据。请检查“还原我”。您是否可以在数据框中使用
dput
,并将结果发布到您的问题中?@Sven。请在我编辑的帖子中找到dput数据。我已检查。我还有一个疑问,如果我有一个以上的列列表,如value1、value2、value3等。我如何做与上面相同的…@GunasekarS您应该将此问题作为一个新问题发布。@Sven。这是我的帖子,R-如何根据变量递增的多个列表(列)动态添加列到dataframe中。请检查一下。
library(dplyr)
dat %>%
mutate(idx = as.character(`is.na<-`(cumsum(Value != "NULL"),
Value == "NULL"))) %>%
left_join(filter(., Value != "NULL") %>%
pull(Value) %>%
bind_rows(.id = "idx")) %>%
select(-idx)
U_ID Value AD CT Cno# cna cf
1 1 50, jhon ia BG 50 jhon <NA>
2 1 50, guna AS DB 50 guna <NA>
3 2 30, rt, ty BN FV 30 rt ty
4 2 NULL VF TY <NA> <NA> <NA>
5 3 30 RR TT 30 <NA> <NA>