如何在单个列表中的数据帧中添加两行,并将结果行追加到 R 中的其他行



>我正在研究财务数据,其中我已经将多个 excel 工作表读取到 R 中,每个工作表都包含来自不同城市的财务数据。

我的要求是我需要将两个"费用":labor_cost和medical_cost添加到一行中,并将该行附加到列表中每个数据帧中的现有"收入"行

示例数据:

> city1 = data.frame(parameters = c('revenue','labor_cost','medical_cost'), Oct_values = rnorm(3,100), Nov_values = rnorm(3,100))
> city2 = data.frame(parameters = c('revenue','labor_cost','medical_cost'), Oct_values = rnorm(3,100), Nov_values = rnorm(3,100))
> city3 = data.frame(parameters = c('revenue','labor_cost','medical_cost'), Oct_values = rnorm(3,100), Nov_values = rnorm(3,100))
> 
> mylist = list(city1 = city1, city2 = city2, city3 = city3)
> mylist
$city1
parameters Oct_values Nov_values
1      revenue   100.5933  100.38287
2   labor_cost   101.9234  100.34488
3 medical_cost   101.1133   99.75158
$city2
parameters Oct_values Nov_values
1      revenue   99.55789   99.78549
2   labor_cost   97.75944   99.18051
3 medical_cost  100.15035   99.34675
$city3
parameters Oct_values Nov_values
1      revenue  100.85301   97.43272
2   labor_cost   98.87698  100.77948
3 medical_cost  101.24935   99.49057
> 
> mylist <- lapply(mylist, function(x) { x1 = x[,-1] 
+                                 rownames(x1) = x[,1]
+                                 x1
+                                 })
> 
> mylist <- lapply(mylist, function(x) { for(i in 1:ncol(x))
+                                       x[[i]] = as.numeric(as.character(x[[i]]))
+                                       x
+                                       } )
> 
> lapply(mylist, function(x) x[2,] + x[3,])
$city1
Oct_values Nov_values
labor_cost   203.0368   200.0965
$city2
Oct_values Nov_values
labor_cost   197.9098   198.5273
$city3
Oct_values Nov_values
labor_cost   200.1263     200.27

我需要将上述结果附加到列表中每个数据帧中的"收入"行。

预期产出:

mylist[[1]]
Oct_values Nov_values
revenue        100.5933  100.38287
labor_cost     203.0368  200.0965

您可以将lapplycbind一起使用,rbind

lapply(mylist, function(x) cbind(parameter = c('revenue', 'labor_cost'), 
rbind(x[1, -1], x[2, -1] + x[3, -1])))

#$city1
#   parameter Oct_values Nov_values
#1    revenue    99.4395    100.071
#2 labor_cost   201.3285    201.844
#$city2
#   parameter Oct_values Nov_values
#1    revenue    100.461    99.5543
#2 labor_cost    198.048   201.5839
#$city3
#   parameter Oct_values Nov_values
#1    revenue    100.401    101.787
#2 labor_cost    199.555    198.531

数据

set.seed(123)
city1 = data.frame(parameters = c('revenue','labor_cost','medical_cost'), 
Oct_values = rnorm(3,100), Nov_values = rnorm(3,100))
city2 = data.frame(parameters = c('revenue','labor_cost','medical_cost'),
Oct_values = rnorm(3,100), Nov_values = rnorm(3,100))
city3 = data.frame(parameters = c('revenue','labor_cost','medical_cost'), 
Oct_values = rnorm(3,100), Nov_values = rnorm(3,100))
mylist = list(city1 = city1, city2 = city2, city3 = city3)

最新更新