当它们是“因素”时,从R中的数据框中提取字符串列

时间:2018-09-22 07:35:27

标签: r string dataframe

当前,我有一个很大的数据框,在其中我不一定知道所有行的名称,这些行以字符串的形式存储在第一列中(在这种情况下,是提供某些数据的国家/地区的名称)。我需要拿出数据来做其他事情,而我刚巧知道前56行具有我需要的所有名称,每行恰好有一次。

我以为我可以用for循环遍历这些名称的向量:

dat=read.csv("foo.csv",header=TRUE)
Names=character(56)
for (i in 1:56){Names[i]=dat[[i,1]]}

但是发生的是,我最终在Names中得到了一堆整数。当我运行str(dat$NAMES) [我感兴趣的列]时,得到以下信息:

Factor with 56 levels "Angola", "Benin",...: 1 3 4 5 15 27 32 33 39 40 ...

这些似乎是我要获取的整数,但是我一辈子都无法弄清楚如何获取字符串。

1 个答案:

答案 0 :(得分:0)

首先,问题是read.csv在OP认为是字符向量的情况下在第一列中产生了一个因素。

我们可以在将数据加载到stringsAsFactors = FALSE中的R设置read.csv中时避免这种情况。

dat <- read.csv("foo.csv", header = TRUE, stringsAsFactors = FALSE)
#extract the first 56 entries from the first column
Names <- dat[1:56, 1]

如果没有stringsAsFactors = FALSE选项,请使用as.character将该矢量转换为character类型。

dat <- read.csv("foo.csv", header = TRUE, stringsAsFactors = TRUE)
#extract the first 56 entries from the first column
Names <- as.character(dat[1:56, 1])