我想用两个新列创建一个新的数据框。
数据框将包含“扩展的” v3
,该“扩展的” v2
是通过分解左侧v1
中用逗号分隔的值并创建两个新列组成的,其中一列仅包含v1
中对应的值在同一列中,其次是df
中的值除以> df[1,]
v1 v2
1 1 1,3
中相应行中包含并用逗号分隔的值的数量。
换句话说,如果像在这个例子中一样
v1 v2_split v3
1 1 1 0.5
2 1 3 0.5
然后新的df将在前两行中包含以下新条目:
v1 <- c(1,5,3,7,9,3,2,5,NA,7)
v2 <- c("1,3","2","0.05,4,6,7","0",NA,"6","7","10,11","9","0.1")
df <- data.frame(v1,v2)
df$v2 <- as.character(df$v2)
v2_split <- as.numeric(unlist(strsplit(df$v2,",")))
以下是可重现的示例:
.map
答案 0 :(得分:1)
不确定我是否完全正确地回答了问题,但似乎您需要以下条件:
v2_split <- strsplit(df$v2,",")
df <- data.frame(v1 = rep(v1, lengths(v2_split)),
v2 = as.numeric(unlist(v2_split)),
v3 = rep(v1/lengths(v2_split), lengths(v2_split))
)
结果:
> df
v1 v2 v3
1 1 1.00 0.50
2 1 3.00 0.50
3 5 2.00 5.00
4 3 0.05 0.75
5 3 4.00 0.75
6 3 6.00 0.75
7 3 7.00 0.75
8 7 0.00 7.00
9 9 NA 9.00
10 3 6.00 3.00
11 2 7.00 2.00
12 5 10.00 2.50
13 5 11.00 2.50
14 NA 9.00 NA
15 7 0.10 7.00