小编sve*_*n b的帖子

两列之间的数据帧操作,并将结果添加为第三列

给定一个包含列的数据框:

  • "length1"整数作为字符
  • "length2"每个元素都是一串数字

我想获得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'

我放弃了,感觉我所做的是复杂的方式.

r dataframe

2
推荐指数
2
解决办法
99
查看次数

标签 统计

dataframe ×1

r ×1