2017-07-17 65 views
0

让我明白,我不想添加,乘,减或除数据。我希望新列包含来自第一列和第二列的所有信息。这是我的意思的一个例子。如何将两个数据列放入一个较长的数据列中

 data 1  data 2 new data 
1  Q   1   Q 
2  T   5   T 
3  R   3   R 
4        1 
5        5 
6        3 

我在看的值不是绝对的,但我用它们作为示例来显示差异。

+0

'union'是什么,你可能会寻找。 –

+1

如果两个数据列包含在名为“dat”的两列数据框中,则可以执行Reduce(union,dat)'。 – lmo

+0

在数据1上创建一个插入触发器,该数据对具有相同值的新数据执行更新。在数据2上创建一个后插入触发器,该触发器仅执行插入操作,只将新数据设置为新值。 –

回答

1
cbind.fill <- function(...){ 
    # From a SO answer by Tyler Rinker 
    nm <- list(...) 
    nm <- lapply(nm, as.matrix) 
    n <- max(sapply(nm, nrow)) 
    do.call(cbind, lapply(nm, function (x) 
    rbind(x, matrix(, n-nrow(x), ncol(x))))) 
} 

df1 <- data.frame("data 1"=c("Q","T","R"),"data 2"=c(1,5,3), stringsAsFactors = F) 

df2 <- cbind.fill(df1, c(df1$data.1, df1$data.2)) 
colnames(df2) <- c(colnames(df2)[1:2], "new data") 
df2 
data.1 data.2 new data 
[1,] "Q" "1" "Q" 
[2,] "T" "5" "T" 
[3,] "R" "3" "R" 
[4,] NA  NA  "1" 
[5,] NA  NA  "5" 
[6,] NA  NA  "3" 

cbind.fill功能来源:cbind a df with an empty df (cbind.fill?)

相关问题