我有一个字符串和缺失值的数据框架,我需要转换成R中的字符因素,为市场篮子分析做准备。行是没有事务ID的事务。我担心,如果我将单个列转换为因子,那么在我将数据帧更改为事务类之后,两个不同列中的相同项将不会被识别为相同的项。这是给一堂课的。我遇到了一位指导员,他在R 4.1中向我展示了这句话:
newDF <- factor(oldDF)
...but在R4.2中,这与以下消息失败:“xtfrm.data.frame(x)中的警告:无法xtfrm数据帧”
这个错误对我来说是有意义的,因为当我读取factor()函数时,它会将结果按字母顺序排列。出于这个原因,我猜我不想将dataframe转换成一个大的向量,然后在它上运行factor()。
也许“a-规则”包中的trans()函数会自动处理不同列中同一项的因素。
我只想将一列中的一项计算为另一列中的同一项,但我不知道按列分配因素如何支持这一点,但不能保证所有项都在所有列中表示。
发布于 2022-05-20 01:36:57
如果将级别提供给factor()
,则生成的因子将包含所有提供的值,即使列中没有它们。但是要小心--如果你没有把一个值作为一个级别,或者你拼写错了,它会在没有警告的情况下被替换为NA,所以要确保包含所有可能的值。
您可以一次使用across()
将其应用于所有变量。现在,newDF中的每一列都将是一个具有相同级别的因素,即“A项”、“B项”、“项目C”。如果列中有任何“项目D”,它们将被NA替换。
library(dplyr)
newDF <- oldDF %>%
mutate(across(everything(), ~factor(.x, levels = c("item A", "item B", "item C"))))
https://stackoverflow.com/questions/72312548
复制相似问题