我正在尝试将数据框变量更改为因子变量但遇到问题
I'm trying to change a data frame variable to a factor variable but having issues
> summary(CA_extract[2])
REPORTING_YEAR
Min. :1990
1st Qu.:1995
Median :2010
Mean :2007
3rd Qu.:2017
Max. :2019
> table(CA_extract[2])
1990 1995 2000 2005 2010 2015 2016 2017 2018 2019
9081 5335 5787 5685 4888 4644 4590 4606 4581 4517
> nrow(CA_extract)
[1] 53714
> ncol(CA_extract)
[1] 20
> class(CA_extract[2])
[1] "data.frame"
> summarise(CA_extract[2])
data frame with 0 columns and 1 row
> as.factor(CA_extract[2])
REPORTING_YEAR
<NA>
Levels: c(1990, 1995, 2000, 2005, 2010, 2015, 2016, 2017, 2018, 2019)
> is.numeric(CA_extract[2])
[1] FALSE
> is.character(CA_extract[2])
[1] FALSE
> is.list(CA_extract[2])
[1] TRUE
> is.double(CA_extract[2])
[1] FALSE
> is.factor(CA_extract[2])
[1] FALSE
> is.vector(CA_extract[2])
[1] FALSE
我一直在试图弄清楚如何将它更改为一个因子,据我所知,数据应该允许它工作,但每次我 运行 我都会得到一个带有一叠 N/As。任何帮助都会很棒,我能够让它在一个孤立的案例中工作,但我失去了解决方案,我无法将它集成到 for 循环中。
如果您需要更多信息,请告诉我。不知道如何在不下载我所做的相同数据集的情况下提供可重现的数据。 (公开可用)
你漏掉了一个逗号:
CA_extract[, 2] <- factor(CA_extract[, 2])
还有
CA_extract$varname <- factor(CA_extract$varname)
简答:as.factor(CA_extract[[2]])
问题与您如何仅使用单个括号来引用数据框中的列有关。请参阅 this answer (and the relevant section in the R documentation),了解索引方法差异的详细解释。
使用单括号索引您的数据框 returns 另一个数据框,正如您在测试中看到的那样 class(CA_extract[2])
。比较 str(CA_extract[2])
和 str(CA_extract[[2]])
的输出,差异应该很明显。
> summary(CA_extract[2])
REPORTING_YEAR
Min. :1990
1st Qu.:1995
Median :2010
Mean :2007
3rd Qu.:2017
Max. :2019
> table(CA_extract[2])
1990 1995 2000 2005 2010 2015 2016 2017 2018 2019
9081 5335 5787 5685 4888 4644 4590 4606 4581 4517
> nrow(CA_extract)
[1] 53714
> ncol(CA_extract)
[1] 20
> class(CA_extract[2])
[1] "data.frame"
> summarise(CA_extract[2])
data frame with 0 columns and 1 row
> as.factor(CA_extract[2])
REPORTING_YEAR
<NA>
Levels: c(1990, 1995, 2000, 2005, 2010, 2015, 2016, 2017, 2018, 2019)
> is.numeric(CA_extract[2])
[1] FALSE
> is.character(CA_extract[2])
[1] FALSE
> is.list(CA_extract[2])
[1] TRUE
> is.double(CA_extract[2])
[1] FALSE
> is.factor(CA_extract[2])
[1] FALSE
> is.vector(CA_extract[2])
[1] FALSE
我一直在试图弄清楚如何将它更改为一个因子,据我所知,数据应该允许它工作,但每次我 运行 我都会得到一个带有一叠 N/As。任何帮助都会很棒,我能够让它在一个孤立的案例中工作,但我失去了解决方案,我无法将它集成到 for 循环中。
如果您需要更多信息,请告诉我。不知道如何在不下载我所做的相同数据集的情况下提供可重现的数据。 (公开可用)
你漏掉了一个逗号:
CA_extract[, 2] <- factor(CA_extract[, 2])
还有
CA_extract$varname <- factor(CA_extract$varname)
简答:as.factor(CA_extract[[2]])
问题与您如何仅使用单个括号来引用数据框中的列有关。请参阅 this answer (and the relevant section in the R documentation),了解索引方法差异的详细解释。
使用单括号索引您的数据框 returns 另一个数据框,正如您在测试中看到的那样 class(CA_extract[2])
。比较 str(CA_extract[2])
和 str(CA_extract[[2]])
的输出,差异应该很明显。