首页 > 解决方案 > 根据其他数据框中的列值选择 R 数据框中的列

问题描述

我有两个数据框,如下所示。

  #Dataframe 1
    colname value
    col1    0.45
    col2    -0.2
    col3    -0.4
    col4    0.1

#Dataframe 2
col1 col2 col3 col4
1    5    9    5
45   29   43   9
34   33   56   3
2    67   76   1

我想要做的是首先选择数据框 1 中值 > 0.3 或值 < -0.3 的所有列。我想要的第二件事是从数据框 2 中选择与此条件匹配的所有列。所以 dataframe2 的 col1 和 col3 列应该被选择到一个新的 dataframe 中,如下所示。

col1  col3 
1     9   
45    43   
34    56   
2     76   

我想到的解决方案是首先选择相关列,如下面的代码所示。

library(sqldf)
features = sqldf('select colname from dataframe1 where value > 0.3 or value < -0.3')

在此之后,在 for 循环中构建一个字符串,如下所示。并将其粘贴到sqldf查询中以从 dataframe2 中选择正确的列。但是我不知道如何构建这个字符串。你们知道这一点或有其他解决方案吗?

  stringValue = "col1, col3, col4"
   sprintf("SELECT %s FROM dataframe2", stringValue)

标签: rstringdataframe

解决方案


dataframe1仅使用您当前的col1并且col3将被选中。

library(sqldf)
features = sqldf('select colname from dataframe1 where value > 0.3 or value < -0.3')
sqldf(sprintf("SELECT %s FROM dataframe2", paste0(features$colname, collapse = ", ")))


#       col1 col3
#    1    1    9
#    2   45   43
#    3   34   56
#    4    2   76

数据

#Dataframe 1
dataframe1 <- read.table(text = 'colname value
    col1    0.45
                         col2    -0.2
                         col3    -0.4
                         col4    0.1', header = T, sep = "")

#Dataframe 2
dataframe2 <- read.table(text = 'col1 col2 col3 col4
1    5    9    5
45   29   43   9
34   33   56   3
2    67   76   1', header = T, sep = "")

推荐阅读