我有一个数据框,其中有两个因子(distance
)和年份(years
)。 我想为每个因子的所有 years
值填充 0。
即:
distance years area
1 NPR 3 10
2 NPR 4 20
3 NPR 7 30
4 100 1 40
5 100 5 50
6 100 6 60
获取这个:
distance years area
1 NPR 1 0
2 NPR 2 0
3 NPR 3 10
4 NPR 4 20
5 NPR 5 0
6 NPR 6 0
7 NPR 7 30
8 100 1 40
9 100 2 0
10 100 3 0
11 100 4 0
12 100 5 50
13 100 6 60
14 100 7 0
我尝试使用expand
函数:
library(tidyr)
library(dplyr, warn.conflicts = FALSE)
expand(df, years = 1:7)
但这只会生成一个列的数据框,而不是扩展原始的数据框:
# A tibble: 7 x 1
years
<int>
1 1
2 2
3 3
4 4
5 5
6 6
7 7
或者expand.grid
也不起作用:
require(utils)
expand.grid(df, years = 1:7)
Error in match.names(clabs, names(xi)) :
names do not match previous names
In addition: Warning message:
In format.data.frame(x, digits = digits, na.encode = FALSE) :
corrupt data frame: columns will be truncated or padded with NAs
是否有一种简单的方法可以扩展
我的数据框?如何基于两个类别distance
和uniqueLoc
来扩展它?
distance <- rep(c("NPR", "100"), each = 3)
years <-c(3,4,7, 1,5,6)
area <-seq(10,60,10)
uniqueLoc<-rep(c("a", "b"), 3)
df<-data.frame(uniqueLoc, distance, years, area)
> df
uniqueLoc distance years area
1 a NPR 3 10
2 b NPR 4 20
3 a NPR 7 30
4 b 100 1 40
5 a 100 5 50
6 b 100 6 60