дано 4х2 кадр данных, такие как:R: Expand dataframe строки
df <-
data.frame(
X=c(1,3,6,10),
Y=c('A','K','K3', 'K'))
Я хотел бы получить 10x2 строки dataframe были X
1,2, ... 10 (как и в соотношении 1:10), и Y
тиражируется число раз, указанное в ф.р. $ X, например:
X Y
1 1 A
2 2 A
3 3 K
4 4 K
5 5 K
6 6 K3
7 7 K3
8 8 K3
9 9 K3
10 10 K
только думаю, что я могу думать о том, чтобы построить Y
обернув через'df' как (псевдокод):
for(i in 1:(nrow(df)-1)){
Y <- c(Y,(rep.int(df$Y[i], df$X[i+1]-df$X[i])))}
Кажется, комковатый. Может быть, пакеты, такие как reshape2
или splitstackshape
, помогут мне?
Вы также можете сделать 'splitstackshape :: expandRows (Д.Ф., с (дифференциал (ДФ $ X), 1), FALSE)', а затем исправить 'столбец x' или что-то –
Или базовый параметр R transform (df [rep (1: nrow (df), c (diff (df $ X), 1)),], X = seq (max (df $ X))) ' – akrun