在 rbind.fill 中指定 "fill value"
specify "fill value" in rbind.fill
ds2 已经包含一个 NA。我想区分 "already there" NA 和填充生成的 NA
library(plyr)
l <- LETTERS[]
ds1 <- data.frame(a=l[1:3],b=l[5:7],c=l[7:9],d=l[10:12],stringsAsFactors = F)
ds2 <- data.frame(a=NA,b=l[23], c=l[22],stringsAsFactors = F)
rbind.fill(ds1,ds2)
给出:
a b c d
1 A E G J
2 B F H K
3 C G I L
4 <NA> W V <NA>
我想要那个:
a b c d
1 A E G J
2 B F H K
3 C G I L
4 <NA> W V foobar
我需要一个通用的解决方案来设置特定的 "fill value" 绑定数据帧。
我知道我可以这样区分 NA:
ds2[is.na(ds2)] <- "alreadyFooBar"
rbind.fill(ds1,ds2)
a b c d
1 A E G J
2 B F H K
3 C G I L
4 alreadyFooBar W V <NA>
有可能反过来吗?
我认为这应该可以满足您的需求:
library(plyr)
library(dplyr)
l <- LETTERS[]
ds1 <- data.frame(a=l[1:3],b=l[5:7],c=l[7:9],d=l[10:12],],stringsAsFactors = F)
ds2 <- data.frame(a=NA,b=l[23], c=l[22],stringsAsFactors = F)
NewCols <- setdiff(colnames(ds1),colnames(ds2))
ds2[NewCols] <- "fooBar"
rbind.fill(ds1,ds2)
给出:
a b c d
1 A E G J
2 B F H K
3 C G I L
4 <NA> W V fooBar
谢谢。我创建了我将来可以依赖的功能。即使两个输入都可能缺少列
fast.rbind <- function(x,y,value=NA){
x[setdiff(colnames(y),colnames(x))] <- value
y[setdiff(colnames(x),colnames(y))] <- value
return(rbind(x,y))
}
x <- data.frame(a=l[1:3],b=l[5:7],c=l[7:9],d=l[10:12],stringsAsFactors = F)
y <- data.frame(a=NA, z=l[22],stringsAsFactors = F)
fast.rbind(x,y,"foobar")
ds2 已经包含一个 NA。我想区分 "already there" NA 和填充生成的 NA
library(plyr)
l <- LETTERS[]
ds1 <- data.frame(a=l[1:3],b=l[5:7],c=l[7:9],d=l[10:12],stringsAsFactors = F)
ds2 <- data.frame(a=NA,b=l[23], c=l[22],stringsAsFactors = F)
rbind.fill(ds1,ds2)
给出:
a b c d
1 A E G J
2 B F H K
3 C G I L
4 <NA> W V <NA>
我想要那个:
a b c d
1 A E G J
2 B F H K
3 C G I L
4 <NA> W V foobar
我需要一个通用的解决方案来设置特定的 "fill value" 绑定数据帧。
我知道我可以这样区分 NA:
ds2[is.na(ds2)] <- "alreadyFooBar"
rbind.fill(ds1,ds2)
a b c d
1 A E G J
2 B F H K
3 C G I L
4 alreadyFooBar W V <NA>
有可能反过来吗?
我认为这应该可以满足您的需求:
library(plyr)
library(dplyr)
l <- LETTERS[]
ds1 <- data.frame(a=l[1:3],b=l[5:7],c=l[7:9],d=l[10:12],],stringsAsFactors = F)
ds2 <- data.frame(a=NA,b=l[23], c=l[22],stringsAsFactors = F)
NewCols <- setdiff(colnames(ds1),colnames(ds2))
ds2[NewCols] <- "fooBar"
rbind.fill(ds1,ds2)
给出:
a b c d
1 A E G J
2 B F H K
3 C G I L
4 <NA> W V fooBar
谢谢。我创建了我将来可以依赖的功能。即使两个输入都可能缺少列
fast.rbind <- function(x,y,value=NA){
x[setdiff(colnames(y),colnames(x))] <- value
y[setdiff(colnames(x),colnames(y))] <- value
return(rbind(x,y))
}
x <- data.frame(a=l[1:3],b=l[5:7],c=l[7:9],d=l[10:12],stringsAsFactors = F)
y <- data.frame(a=NA, z=l[22],stringsAsFactors = F)
fast.rbind(x,y,"foobar")