添加一行到数据帧与缺失值
问题描述:
所以我有这个数据帧添加一行到数据帧与缺失值
df <- data.frame(A=1:10, B=LETTERS[1:10], C=letters[1:10], stringsAsFactors= F)
我想添加一行与A = 11和C =“K”这个数据帧,但我不”在C列上有信息。实际上,我不知道数据框中除了A和B之外还有其他哪些列。这些缺失的列应该有NA。我能想到的最好的是:
tmp <- rep(NA, ncol(df)) # Batman!
df <- rbind(df, tmp)
df[ nrow(df), "A" ] <- 11
df[ nrow(df), "B" ] <- "K"
有没有更简单的方法?
答
基础版本:
new.row <- list(A=11, B="K")
df[nrow(df) + 1, names(new.row)] <- new.row
plyr
版本:
library(plyr)
new.row <- data.frame(A=11, B="K", stringsAsFactors=F)
df <- rbind.fill(df, new.row)
都产生:
A B C
1 1 A a
2 2 B b
3 3 C c
4 4 D d
5 5 E e
6 6 F f
7 7 G g
8 8 H h
9 9 I i
10 10 J j
11 11 K <NA>
您也可以概括的基本版本更多行:
more.rows <- data.frame(A=15:20, B=letters[15:20], stringsAsFactors=F)
df[(nrow(df) + 1):(nrow(df) + nrow(more.rows)), names(more.rows)] <- more.rows
生产:
A B C
1 1 A a
2 2 B b
3 3 C c
4 4 D d
5 5 E e
6 6 F f
7 7 G g
8 8 H h
9 9 I i
10 10 J j
11 11 K <NA>
12 15 o <NA>
13 16 p <NA>
14 17 q <NA>
15 18 r <NA>
16 19 s <NA>
17 20 t <NA>
答
这里的一个替代基础版本,可以保留数据类型。
new.row <- head(df[NA,], 1)
new.row[c('A', 'B')] <- list(A=11, B='K')
rbind(df, new.row)
+0
不错;第一行的'df [1,] [NA,]'怎么样?然后,我们不会生成与df相同大小的另一个数据帧。 – January
看看我添加到我的答案的新版本。我认为那是最干净的。 – BrodieG