r - 如何向列表中的每个数据框添加一列

标签 r

这是我的设置

df1<-data.frame(time=c(1,2,3),y=c(2,3,6))
df2<-data.frame(time=c(1,2,3),y=c(3,4,7))
mylist<-list(df1,df2)

mylist
[[1]]
  time y
1    1 2
2    2 3
3    3 6

[[2]]
  time y
1    1 3
2    2 4
3    3 7

我想加一栏,ratio到每个数据帧,它是 y 的值相对于时间 1 的 y 值的比率。这相当于做
mylist[[1]]$ratio<-mylist[[1]]$y/mylist[[1]]$y[1]
mylist[[2]]$ratio<-mylist[[2]]$y/mylist[[2]]$y[1]

mylist
[[1]]
  time y ratio
1    1 2   1.0
2    2 3   1.5
3    3 6   3.0

[[2]]
  time y    ratio
1    1 3 1.000000
2    2 4 1.333333
3    3 7 2.333333

关于如何做到这一点的任何建议?

最佳答案

这是一种仅使用基础 R 的方法:

lapply(mylist, transform, ratio = y / y[1])
# [[1]]
#   time y ratio
# 1    1 2   1.0
# 2    2 3   1.5
# 3    3 6   3.0
# 
# [[2]]
#   time y    ratio
# 1    1 3 1.000000
# 2    2 4 1.333333
# 3    3 7 2.333333

写成这样可能更容易理解
lapply(mylist, function(x) transform(x, ratio = y / y[1]))

另见 ?transform .

关于r - 如何向列表中的每个数据框添加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20788781/

相关文章:

r - for 循环使用 "<-"在 R 中创建变量

r - 通过 id 变量计算滚动总和,缺少时间点

根据名称将列表中的元素替换为另一个列表中的元素

r - 估计 lsmeans 的差异

r - 在 select_ 中构造变量名

r - 在 R 中,指示每行中的哪些列的值是 "true"

r - 在 df 返回中给予/获取一定数量的行

R ggplot2 - 具有通用色标的多个图

r - 缺少值-Hot Deck邻居方法

R:将变量从 R 传递到 unix