给定一个包含列的数据框:
我想获得length2列相对于length1列的百分比.所以像df $ length2/df $ lenght1*100.请参阅以下最小示例:
> df=data.frame(length1=c("10","12","14"))
> df$length2=list("2,3,4","4,5,3","3,2,6")
> df
length1 length2
1 10 2,3,4
2 12 4,5,3
3 14 3,2,6
> dfresult=df
> dfresult$resultInPercent=list("20,30,40","33,41,25","21,14,42")
> dfresult
length1 length2 resultInPercent
1 10 2,3,4 20,30,40
2 12 4,5,3 33,41,25
3 14 3,2,6 21,14,42
Run Code Online (Sandbox Code Playgroud)
我不能让它工作,我的方法是:
dfresult=apply(df, 1, function(x)
{
lapply(lapply(lapply(x$length2,strsplit,split=","),as.numeric),function(y)
{
round(as.numeric(y)/as.numeric(x$length1)*100)
}
)
}
)
Run Code Online (Sandbox Code Playgroud)
lapply中的错误(lapply(x $ length2,strsplit,split =","),as.numeric):( list)对象无法强制键入'double'
我放弃了,感觉我所做的是复杂的方式.