从R中的数据框中子集列[重复]

Posted

技术标签:

【中文标题】从R中的数据框中子集列[重复]【英文标题】:Subsetting columns from the data frame in R [duplicate] 【发布时间】:2015-10-04 06:24:24 【问题描述】:

关于 R 中的子集列,我有一个相对简单的问题。

我有两个数据框,dat1 和 dat2:

>dat1
      cities countries areakm2 populationk
1   Shanghai     China    2643       21766
2    Beijing     China    1368       21500
3        NYC       USA Unknown        8406
4         LA       USA    1302        3884
5     London        UK    1737     Unknown
6 Manchester        UK     116         255

> dat2
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5

然后,如果我想对 dat1 的第一列进行子集化,我会得到以下信息:

> dat1[,1]
[1] Shanghai   Beijing    NYC        LA         London     Manchester
Levels: Beijing LA London Manchester NYC Shanghai
> class(dat1[,1])
[1] "factor

但是,如果我对 dat2 做同样的事情,我会得到一个向量,而不是一个因子。

> dat2[,1]
[1] 41 36 12 18 NA
> class(dat2[,1])
[1] "integer"

我不明白这两种情况有什么区别。我认为这与数据类型有关(在 dat1 中第一列由字符组成,而在 dat2 中为整数)

谢谢

【问题讨论】:

【参考方案1】:

其实两者都是向量。因子之一和整数之一。如果您希望 R 将它们视为字符(另一种类型,如因子或整数),您应该使用

stringsAsFactors = FALSE

在创建你的data.frame

【讨论】:

但我想知道为什么 R 在这些情况下显示的输出不同? 这是 R 显示因子向量的方式,它显示了基础水平。但在进一步的计算中,它们都将被以相同的方式处理。 谢谢!现在,我可以接受了

以上是关于从R中的数据框中子集列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在R中,获取数据框的子集,其中列中的值包含在列表中[重复]

根据列中的条件对数据框中的行进行子集/过滤

如何在 R 中合并同一数据框中的行(基于特定列下的重复值)?

从 R 中的整个数据帧中删除空格

试图在r中隔离数据框中的两列[重复]

R中数据框中的嵌套子集