【发布时间】:2021-08-12 07:59:03
【问题描述】:
我有一个名为 mydata 的数据框列表。每个数据框都包含有关学生在每个科目中不同年份的表现的信息。其中一个数据框如下所示:
X12.31.2008 X5.85 X15.785 X53293 X774157 X3988 X40992
1 12/31/2009 4.45 9.867 56490 710796 2340 43158
2 12/31/2010 4.55 11.333 62149 725957 3262 47962
3 12/31/2011 6.84 13.496 68405 786719 4026 53815
4 12/31/2012 6.84 11.804 84445 898371 4439 64900
5 12/31/2013 8.20 14.140 85201 962863 5222 64702
6 12/31/2014 9.25 15.601 90945 991414 5573 70239
7 12/31/2015 10.00 16.924 98647 1144604 5899 75785
8 12/31/2016 10.30 17.375 102280 1101023 5835 81604
9 12/31/2017 10.70 16.657 119258 1169595 5882 92110
10 12/31/2018 11.10 16.765 121606 1288744 6282 91278
11 12/31/2019 11.25 17.176 128683 1399175 5772 95395
我想为每个数据框添加一列,该列包含特定主题从一年到另一年获得的百分比变化(数学百分比)说这是第 4 列(以开头的那一列。例如,我希望新列是 2008 值减去 2007 值。下一个值是 2009 值减去 2008 值。并对列表中的每个数据框执行此操作。我使用 col.names 尝试删除列名,因为我保留当我有列名时收到一个错误,我有重复的名称
我尝试使用此代码:
col_change<- function(x){
positions<- length(x)
the_change = NULL
the_change[1]=0
for (i in 1: (positions-1)){
the_change[i+1]=x[i+1]-x[i]
}
return(the_change)
}
#class(the_change)
for (i in 1: length(mydata)){
mydata[[i]]= cbind(mydatas[[i]],col_change(mydata[[i]][,4]))
}
但我收到一条错误消息Error in x[i + 1] - x[i] : non-numeric argument to binary operator
我不知道出了什么问题。
我也尝试使用 mutate 和 lag 但它也给了我错误。
我怎样才能做到这一点?
【问题讨论】:
标签: r list dataframe difference