我有这样的数据框。
input = read.table('input',header = T,sep ='\ t')
v1 v2 v3 v4 v5
1 E Z,D 1:115:3:0.0 0/1/2:71:7,5:0.003,0.009
3 ZE AB,CD,FG 0/3:331:9:0.00588 0/2:235:8:0.04704
我将v3拆分为“,”
v3.input = strsplit(as.character(输入$ v3),“,”)
并通过data.frame()
复制v1值df = data.frame(v1 = rep(输入$ v1,sapply(v3.input,length)),v3 = unlist(v3.input))
但是我想在v3列中插入相应的v2列值作为列表的第一个元素,然后删除列v2。此外,我想将列v4:v5拆分为“:”, 保留第一个和第三个元素,并分别用“/”和“,”分开。
数据框应如下
v1 v3 v4 v5
1 E NA 0
1 Z 1,3 1,7
1 D NA 2,5
3 ZE 0 0
3 AB NA NA
3 CD NA 2,8
3 FG 3,9 NA
我试过
concat.split.multiple(input,split.cols = c(“v4”,“v5”),seps =“:”, direction =“wide”)
但是,如何选择列表的第一个和第三个元素并将它们拆分?
dput(输入)
structure(list(v1..v2..v3..v4..v5 = structure(1:2, .Label = c("1 E Z,D 1:115:3:0.0 0/1/2:71:7,5:0.003,0.009", "3 ZE AB,CD,FG 0/3:331:9:0.00588 0/2:235:8:0.04704"), class = "factor")), .Names = "v1..v2..v3..v4..v5", class = "data.frame", row.names = c(NA, -2L))