我需要你的帮助:
这是我的一个数据框的示例:
V1 V2 V3
2 7002
8 14 Feb 1959 47.664 1.310
9 25 Aug 1960 680.615 3.790
10 08 Aug 1961 287.893 2.490
11 11 Feb 1962 405.366 2.920
12 14 Dec 1962 312.010 2.560
13 18 Aug 1964 167.684 1.930
[....]
53 19 Jan 2004 385.980 2.835
54 13 Jun 2005 415.942 2.939
55 26 Nov 2005 280.773 2.431
56 [END]
因此,在这种情况下,将7002添加为新列并删除第56行。 我的列表中有大约290个数据帧。
由于 保罗
答案 0 :(得分:2)
我们可以使用lapply
循环list
,删除最后一行(x[-nrow(x),]
),然后使用第一个单元格值创建一个新列。
lst1 <- lapply(lst, function(x) transform(x[-nrow(x),], NewCol = x[1,1]))
答案 1 :(得分:0)
如果您的所有数据帧看起来都相同,则可以使用类似的内容:
df1 <- data.frame(matrix(data = (rnorm(9)), 3, 3))
df2 <- data.frame(matrix(data = (100:108), 3, 3))
colnames(df1) <- c("V1", "v2", "V3")
colnames(df2) <- c("V1", "v2", "V3")
list1 <- list(df1, df2)
list2 <- list1
for(i in 1:length(list2)) {
list2[[i]] <- list2[[i]][-length(list2[[i]]), ]
colnumber <- dim(list2[[i]])[2] + 1
list2[[i]]$V4 <- list2[[i]][1, 1]
}
list2
但是,如果你有一个更复杂的结构或者每个数据帧中的值不在同一个位置,你将不得不寻找一个dplyr或apply-solution,或者甚至编写你自己的函数。
我希望它有所帮助。