R 在数据框中的列中拆分嵌套列表
下面是R中的数据帧,其中第二列是字符向量:R 在数据框中的列中拆分嵌套列表,r,R,下面是R中的数据帧,其中第二列是字符向量: COlA COlB 1 list(ved = "19", ved_name = "No", vedd = "11") 2 list(ved = c("65", "83", "2"), ved_name = c("At", "Re", "Rum&quo
COlA COlB
1 list(ved = "19", ved_name = "No", vedd = "11")
2 list(ved = c("65", "83", "2"), ved_name = c("At", "Re", "Rum"), vedd = c("11", "11", "11"))
如何将这些数据转换为下面的预期输出
预期产量
COlA COlB-ved COlB-ved_name COlB-vedd
1 19 No 11
2 65 At 11
2 83 Re 11
2 2 Rum 11
资料
df首先需要以字符格式解析和评估R表达式,然后取消它们的测试:
图书馆弹琴
图书馆三年
df$COlB%unnest_AUTOCLB%>%unnestcols=cved,ved_名称,vedd
>使用“unnest_widerCOlB”;元素共有3个名称
>一个tibble:4x4
>可口可乐ved_name vedd
>
>11911号
>2 65点11分
>3 2 83 Re 11
>4 2朗姆酒11
由v0.3.0于2020-09-05创建,您首先需要以字符格式解析和评估R表达式,然后取消它们的测试:
图书馆弹琴
图书馆三年
df$COlB%unnest_AUTOCLB%>%unnestcols=cved,ved_名称,vedd
>使用“unnest_widerCOlB”;元素共有3个名称
>一个tibble:4x4
>可口可乐ved_name vedd
>
>11911号
>2 65点11分
>3 2 83 Re 11
>4 2朗姆酒11
由v0.3.0于2020-09-05创建,这里是一个基本R选项
do.call(
rbind,
c(
make.row.names = FALSE,
lapply(split(df, seq(nrow(df))), function(v) cbind(v[1], eval(str2expression(v$COlB))))
)
)
给
COlA ved ved_name vedd
1 1 19 No 11
2 2 65 At 11
3 2 83 Re 11
4 2 2 Rum 11
这是一个基本的R选项
do.call(
rbind,
c(
make.row.names = FALSE,
lapply(split(df, seq(nrow(df))), function(v) cbind(v[1], eval(str2expression(v$COlB))))
)
)
给
COlA ved ved_name vedd
1 1 19 No 11
2 2 65 At 11
3 2 83 Re 11
4 2 2 Rum 11
完整性数据表解决方案:
setDT(df)
df[, eval(str2expression(COlB)), by = COlA]
# COlA ved ved_name vedd
# 1: 1 19 No 11
# 2: 2 65 At 11
# 3: 2 83 Re 11
# 4: 2 2 Rum 11
完整性数据表解决方案:
setDT(df)
df[, eval(str2expression(COlB)), by = COlA]
# COlA ved ved_name vedd
# 1: 1 19 No 11
# 2: 2 65 At 11
# 3: 2 83 Re 11
# 4: 2 2 Rum 11
非常感谢。但实际上她的ColB不是一个嵌套列表。这就是性格。这里是结构列表cola=c1,2,COlB=clistved=\19\,ved_name=\No\,vedd=\11\,listved=c\65\,\83\,\2\,ved_name=c\At\,\Re\,\Rum\,vedd=c\11\,\11\,row.names=cNA,-2L,class=ctbl df,tbl,data.frame@Vinod谢谢。请看我的更新。最好将您的dput包含在问题中,因为不清楚数据的格式,这导致您的问题被关闭。我已经投票决定重新开放它。如果这解决了你的问题,请考虑将答案标记为已接受。谢谢,非常感谢。但实际上她的ColB不是一个嵌套列表。这就是性格。这里是结构列表cola=c1,2,COlB=clistved=\19\,ved_name=\No\,vedd=\11\,listved=c\65\,\83\,\2\,ved_name=c\At\,\Re\,\Rum\,vedd=c\11\,\11\,row.names=cNA,-2L,class=ctbl df,tbl,data.frame@Vinod谢谢。请看我的更新。最好将您的dput包含在问题中,因为不清楚数据的格式,这导致您的问题被关闭。我已经投票决定重新开放它。如果这解决了你的问题,请考虑将答案标记为已接受。非常感谢。