【问题标题】:Read column names from a csv file and subset a dataframe从 csv 文件中读取列名并将数据框设置为子集
【发布时间】:2021-08-14 13:05:47
【问题描述】:

我想根据所需的列名保留数据框的特定列。为此,我创建了一个名为 NameList 的数据框,其中包含所需的列名,并使用 match 命令从名为 的参考数据框中提取所需的列df。生成的数据帧是参考数据帧的子集,名为 NewDF

Fire <- c(42,46,29);
height <- c(21,25,28);
age <- c(23, 41, 32)
df <- data.frame(Fire,height,age);
NameList <- c("age","Fire")

idx <- match(NameList, names(df));
idx <- sort(idx)
NewDF <- df[,idx]

我的问题是,当我从 csv 文件加载这些名称时,我无法重复此过程。我未能将输入数据转换为与 NameList 相同的格式。因此,我想就如何创建一个合适的 csv 文件来寻求您的帮助,R 将读取并转换输入数据,以便它们可用于提取所需的列

K

【问题讨论】:

  • 你的 csv 有列名吗?它们对所有 csv 都一样吗?
  • 我有一个 csv 文件,其中包含以下内容:: "Name1","Name2","Name3",.... 我尝试将所有名称放在一行中,或者一个每行名称
  • input_data2 是什么? MAINDF 是什么?如果您想从数据框中选择NameList 列,您可以执行df[, NameList]
  • 抱歉,我贴的是修改后的版本。 MAINDF 是 df,input_data2 是 NameList。

标签: r dataframe


【解决方案1】:

我已经设法解决了以下问题:

  1. 创建一个名为 columns_names.csv 的 csv 文件,其中包含所需的列名(请参阅下面的 csv 文件内容) RHO_1 RHO_2 RHO_3
  2. 使用以下代码:
df1 <-  read.table(file = "/Users/kotsios/Desktop/RCODE_CLUSTERING/auxilliary_codes/column_names.csv")
names(df1) <- as.matrix(df1[1, ])
df1 <- df1[-1, ]

#create a dataframe:
RHO_1 <- c("Tom",    "Dick",   "Harry",  "RHO_1" ,"John","RHO_2",   "Paul",   "George","RHO_3",  "Ringo")
RHO_2 <- c(1, 2, 3,4,5,6,7,8,9,10);RHO_3 <- c(1, 2, 3,4,5,6,7,8,9,10);RHO_4 <- c(11, 21, 31,41,51,61,71,81,91,101)
df2 <- data.frame(RHO_1, RHO_2,RHO_3,RHO_4)

#keep the desired column names
df5 <- df2[, (colnames(df2) %in% colnames(df1)) ]


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2023-03-24
    • 2017-05-17
    • 2021-05-19
    • 2020-07-10
    • 2018-04-17
    • 1970-01-01
    相关资源
    最近更新 更多