【问题标题】:Merge two data sets by character/factor values; keep smaller data set按字符/因子值合并两个数据集;保持较小的数据集
【发布时间】:2019-07-25 14:45:15
【问题描述】:

我有一个数据集 A,其中有一列字符值(因子),每个值出现多次。我也有一个已清理的集合(A')的副本(更少的 vars 和 obs)。我现在尝试做的是以只保留较小集合 A' 的行(记录)的方式合并它们。

我已经尝试过右加入它,但我遇到了问题,因为我正在对字符值进行操作。

Info<-c("x","x","x", "y","y","y","z","z","z")
More_info<-c("A", "A","A", "B", "B", "B", "C", "C","C")
Group_A<-cbind(Info, More_info)


vec1<-c("A","B","C")
vec2<-c("one","two","three")
Group_B<-cbind(vec1, vec2)
names(Group_B)<-c("More_Info", "Extra_Info")
x<-right_join(Group_A, Group_B, by= "More_Info")

我得到的是: UseMethod("right_join") 中的错误: 没有适用于 'right_join' 的方法应用于“c('matrix', 'character')”类的对象

我需要什么:

-x-
Info More_Info
A    X
B    Y
C    Z

【问题讨论】:

    标签: r join merge character


    【解决方案1】:

    您可以使用merge

    Info <- c("x","x","x", "y","y","y","z","z","z")
    More_info <- c("A", "A","A", "B", "B", "B", "C", "C","C")
    Group_A <- cbind(Info, More_info)
    
    vec1 <- c("A","B","C")
    vec2 <- c("one","two","three")
    Group_B <- cbind(vec1, vec2)
    
    # Use colnames to change column names, not names
    # Also the 'i' in 'More_Info' should be lower case
    colnames(Group_B) <- c("More_info", "Extra_Info")
    
    # Take the unique values of A
    merge(unique(Group_A), Group_B, by = "More_info", all.x = F, all.y = T)
    #>   More_info Info Extra_Info
    #> 1         A    x        one
    #> 2         B    y        two
    #> 3         C    z      three
    

    【讨论】:

    • 谢谢你,特别是其他小的更正!
    • 不用担心,很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多