R 两个dataframe其中一列内容相同,但是顺序不同,如何合并?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R 两个dataframe其中一列内容相同,但是顺序不同,如何合并?相关的知识,希望对你有一定的参考价值。

QIUQIU

参考技术A library(dplyr)
dt <- full_join(dt1,dt2,by='your_same_col')

在 R [重复] 中使用 $ vs 括号 [] 从数据框中提取一列

【中文标题】在 R [重复] 中使用 $ vs 括号 [] 从数据框中提取一列【英文标题】:Extract a column from the dataframe using $ vs bracket [ ] in R [duplicate] 【发布时间】:2022-01-16 10:24:56 【问题描述】:

我有一个需要提取列的函数,当我使用 dataframe$column1[i] 时,该函数返回错误,但是当我使用 dataframe[, column1][i] 时,它会起作用。为什么我不能只使用 dataframe$column vs dataframe[, column]???

function1 <- function(data, x, y) 

        data <- arrange(data, x)

        ylist <- NULL

        for(i in 1:nrow(data))
                x0 <- data[, x][i] 
                data$d0 <- abs(data[,x] - x0)
                yi <- data %>% arrange(d0) %>% select(y) %>% unlist() %>% mean()
                ylist <- c(ylist, yi)

        
        return(ylist)

如果我在下面这样编写函数,它将返回错误:$&lt;-.data.frame(*tmp*, "d0", value = numeric(0)) 中的错误:替换有 0 行,数据有 500

function1 <- function(data, x, y) 
    
            data <- arrange(data, x)
    
            ylist <- NULL
    
            for(i in 1:nrow(data))
                    x0 <- data$x[i] 
                    data$d0 <- abs(data$x - x0)
                    yi <- data %>% arrange(d0) %>% select(y) %>% unlist() %>% mean()
                    ylist <- c(ylist, yi)
    
            
            return(ylist)
    

【问题讨论】:

您能否提供一些数据以便重现它?简单的方法是dput() 【参考方案1】:

来自help("$")的帮助页面:

[[ 和 $ 都选择列表的单个元素。主要区别在于 $ 不允许计算索引,而 [[ 允许。 x$name 等价于 x[["name", exact = FALSE]]。此外,[[ 的部分匹配行为可以使用精确参数来控制。

回答您的问题:它之所以这样工作,是因为它被设计成这样工作。 $ 采用不带引号的列名,而 [[/[ 采用带引号的列名。不同的运算符用于不同的目的。

【讨论】:

以上是关于R 两个dataframe其中一列内容相同,但是顺序不同,如何合并?的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用colnames函数改变dataframe列名称实战

在 R [重复] 中使用 $ vs 括号 [] 从数据框中提取一列

pandas DataFrame

如何在R中向一个data frame指定位置插入一列或一行

Python Dataframe:在一列上使用Groupby计算R ^ 2和RMSE

pandas dataframe怎么删除所有值都相同的一列