r - 如果列的类型不常见,如何检查列的类型?

标签 r dplyr r-haven

我有一些来自 .sav 文件的 SPSS 数据,并尝试在 R 中使用它。许多变量的类型为 Haven_labelled。我想使用 mutate_if() 将它们转换为 double 。如何为 mutate_if() 创建一个谓词来捕获 Haven_labelled 类型的所有列? Haven 库中有一个 is.labelled() 函数。

最佳答案

我们可以使用 mutate_if 根据条件将函数应用于列。在下面的可重现示例中,labelled 属性位于“Species”列,该列被转换为factor

library(dplyr)
library(haven)
iris1 <- iris %>%
            mutate_if(is.labelled, factor) 

或者另一种选择是使用 class 创建逻辑条件

iris1 <- iris %>%
           mutate_if(~ class(.) ==  "haven_labelled", factor)

-检查结构

str(iris)
#'data.frame':  150 obs. of  5 variables:
# $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species     : 'haven_labelled' chr  "setosa" "setosa" "setosa" "setosa" ...
#  ..- attr(*, "labels")= Named chr  "S" "ve" "vi"
#  .. ..- attr(*, "names")= chr  "setosa" "versicolor" "virginica"

str(iris1)
#'data.frame':  150 obs. of  5 variables:
# $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 #...

数据

data(iris)
iris$Species <- labelled(as.character(iris$Species),
       c("setosa" = "S", "versicolor" = "ve", "virginica" = "vi"))

关于r - 如果列的类型不常见,如何检查列的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125858/

相关文章:

r - 如何处理每次有多个点的时间序列(在 R 中)?

r - 识别 tbl_df 列类

r - 如何在dplyr summarise中使用标准评估_

R 命令用于将工作目录设置为 Rstudio 中的源文件位置

r - 带有日期的 dplyr 中的 Mutate_if 或 mutate_at

r - 使用 group_by 时发生 mutate_at 评估错误

r - 避风港 : read_dta error() "Failed to parse/Users/folder/my_data.dta: Unable to allocate memory."

r - Haven::read_sav 显示值标签而不是代码

r - 使用 klaR NaiveBayes 时出错

r - 实现 dplyr 的 filter() 以显示多年的多个条目