从 csv 文件中读取列名并对数据帧进行子集化

时间:2021-05-26 09:39:50

标签: r dataframe

我想根据所需的列名保留数据框的特定列。为此,我创建了一个名为 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

1 个答案:

答案 0 :(得分:0)

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

  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)) ]


相关问题