我有这个特定的数据框
df1 <- data.frame(ID = c(1,2,3,4), Type1 = c("A","B","A","B"))
ID Type1
1 A
2 B
3 A
4 B
df2 <- data.frame(Length = c("0.75","1.25","1.75","2.25","2.75","3.25"))
Length
0.75
1.25
1.75
2.25
2.75
3.25
通常我会使用cbind
来组合列,例如
dfnew <- head(cbind(df1, df2), 4)
但是,当它们有不同的行时会出现问题,所以我想知道是否有任何方法可以在cbind
命令中指定忽略额外的行。
这是我正在寻找的结果
ID Type1 Length
1 A 0.75
2 B 1.25
3 A 1.75
4 B 2.25
有什么建议吗?最好不必为Length
创建全新的数据帧答案 0 :(得分:0)
如果您正在寻找一个以两个数据帧作为输入的函数,那么这应该有效:
unequal_bind <- function(df1, df2){
len1 <- nrow(df1)
len2 <- nrow(df2)
df_final <- cbind(df1[1:min(len1, len2), ], df2[1:min(len1, len2), ])
df_names <- c(names(df1), names(df2))
df_final <- setNames(df_final, df_names)
}
df_out <- unequal_bind(df1, df2)
df_out
ID Type1 Length
1 1 A 0.75
2 2 B 1.25
3 3 A 1.75
4 4 B 2.25