【问题标题】:How to change the data type of all variables to factor at once [duplicate]如何一次将所有变量的数据类型更改为因子[重复]
【发布时间】:2017-05-18 07:35:20
【问题描述】:

我想将数据类型更改为因子。 下例中显示的数据只有三个变量。 所以,如果你想改变数据类型为因子,你可以像这样输入代码3次。

>str(zxc2)
 'data.frame':  50000 obs. of  3 variables:
 $ CA0000005: int  1 1 2 2 1 1 2 1 5 1 ...
 $ CA0000008: int  1 0 2 2 1 1 2 1 1 0 ...
 $ CA0000602: int  0 832 3077 3155 0 0 0 0 995 2712 ...

>zxc2$CA0000005<-as.factor(zxc2$CA0000005)
>zxc2$CA0000008<-as.factor(zxc2$CA0000008)
>zxc2$CA0000602<-as.factor(zxc2$CA0000602)

但是,如果有很多变量,很难像上面那样输入每个变量。 如果所有变量都需要更改为因子,我该如何一次更改它们?

提前感谢您的回复。

【问题讨论】:

  • lapply(df, as.factor)
  • 如果问题是“我想一次对每一列都做&lt;something&gt;”,答案是lapply(df, &lt;something&gt;)
  • 如果你想要的输出是数据框,那么试试data.frame(sapply(zxc2, factor))

标签: r function variables type-conversion


【解决方案1】:

我们可以使用lapply 循环遍历列,将其转换为factor 并将其分配回原始数据集

zxc2[] <- lapply(zxc2, factor)

【讨论】:

  • 我对否决票一无所知,但这是正确答案的变体。为了方便起见,也许是sapply
  • @catastrophic-failure sapply 方法不好,因为它将它转换为 matrix 并且矩阵只能包含一个类,导致 character,但用 @987654328 包装它@ 再次转换为 factor,但对于简单的转换来说,发生的事情要多得多。
  • 没错,我已经习惯了使用character,所以我总是使用matrix而不是data.frame,所以我从不错过这些因素。
  • @Then... 如果数据集有字符变量,必须使用什么函数?作为您的回复,我不能使用 >as.data.frame(sapply(zxc2, factor))。对吗?
  • @서영재 我的意思是和as.data.frame(as.matrix(zxc2))做同样的事情是迂回的方式,最好在我的回答中使用该选项
猜你喜欢
  • 1970-01-01
  • 2012-01-25
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 2019-09-07
  • 2010-11-22
  • 2017-05-06
相关资源
最近更新 更多