【发布时间】:2016-02-18 08:05:39
【问题描述】:
我有这个数据框:
df <- data.frame(group=c("A", "A", "B", "B"), year=c(1980, 1986, 1990, 1992))
group year
1 A 1980
2 A 1986
3 B 1990
4 B 1992
我想通过以下方式修改它:
- 为每个现有行添加前两年的行
- 添加一个带有相应年份变量的新列
- 删除现有行
这将是结果:
group year pre
1 A 1978 pre1980
2 A 1979 pre1980
3 A 1984 pre1986
4 A 1985 pre1986
5 B 1988 pre1990
6 B 1989 pre1990
7 B 1990 pre1992
8 B 1991 pre1992
添加新列会很容易..
df$pre <- paste("pre", df$year, sep="")
但我不知道如何添加相应年份的新行(当然,创建一个全新的数据框也一样好)。有什么提示吗?
【问题讨论】:
-
do.call('rbind', lapply(1:nrow(df), function(x) {x <- df[x, ]; data.frame(group = x$group, year = x$year - 2:1, pre = paste0('pre', x$year))}))