我有两组数据,7个变量的2个观测值。
我正在尝试生成一组数据(数据帧),该数据集是我当前拥有的两组数据的组合。
例如,目标是拥有一组数据,即7变量的4 obs。只需将第二个数据集的行添加到下面的其他行即可。基本上只是尝试创建一个更大的表,其中包含我所拥有的更多行。
我尝试过的事情包括安装dplyr:
rbind(df1,df2)
rbind(df1,df2, .is=NULL)
我遇到以下错误:
Error in match.names(clabs, names(xi)) :
names do not match previous name
我相信这是由于从csv文件生成了我的数据,该文件包含我的第一个数据集的标头作为列标头,而第二个数据集具有不同的标头,因为它是从文件中进一步读取的,因此标头是x1,x1.1等...
所以我尝试了unnamed()也失败了。
然后我尝试了
bind_rows(df1,df2)
但是它却给了我4x14的数据集。 我在其他地方也遇到了错误
错误:与STRSXP不兼容
我认为问题出在我的数据帧可能存储为列表,以及数据中的某些列作为字符,另一些列作为数字。
答案 0 :(得分:1)
如果我了解问题所在,则数据框中的数据类型不同。解决方案可能是:
library(dplyr)
library(hablar)
# Example data sets
df1 <- data.frame(a = c(1L, 2L))
df2 <- data.frame(a = c("1", "2"), stringsAsFactors = F)
# Solution
df1 <- df1 %>% retype()
df2 <- df2 %>% retype()
bind_rows(df1, df2)
哪个给出了合并的数据框:
# A tibble: 4 x 1
a
<int>
1 1
2 2
3 1
4 2
答案 1 :(得分:1)
我不确定是否正确,但是您可能会遇到不同的别名和数据类型。
您可以做什么:
1)colnames(df1)
和colnames(df2)
:您具有相同的姓氏吗?
2)然后,尝试str(df1)
和str(df2)
,看是否有差异。
3)如果您的数据框存储为列表,请将其转换回数据框。
广告1)如果出现姓氏的问题,您可以这样做:
colnames(df2) <- colnames(df1)
rbind(df1,df2)
广告2):如果仍然无法正常工作并且数据类型不同,请使它们彼此匹配,然后尝试重新绑定行。
广告3):如果您的数据框是列表,因此不起作用,请尝试:
library(dplyr)
bind_rows(bind_rows(df1), bind_rows(df2))