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>