【发布时间】:2021-03-12 14:48:23
【问题描述】:
我原来有一个数据集,大小为:1652行,50列,但在这个例子中本质是一样的。数据集是 df,我希望以 newdf 结尾。有人知道如何使用 dplyr 解决这个问题吗?
df <- cbind(c("HouseCar", "Car", "carmouse", "mouse", NA),
c("car", NA, "Mousehouse", "housevan", NA),
c(NA, "mousevan", "Carhouse", NA, "mouse"))
df
[,1] [,2] [,3]
[1,] "HouseCar" "car" NA
[2,] "Car" NA "mousecar"
[3,] "carmouse" "Mousehouse" "Carhouse"
[4,] "mouse" "house" NA
[5,] NA NA "mouse"
期望的输出(有一个重新编码层次结构房屋>车辆(面包车,汽车)>鼠标):
> newdf
[,1] [,2] [,3]
[1,] "House" "Vehicle" NA
[2,] "Vehicle" NA "Vehicle"
[3,] "Vehicle" "House" "House"
[4,] "Mouse" "House" NA
[5,] NA NA "Mouse"
我打算这样做,但我想知道为什么这段代码不起作用?
newdf <- df %>%
replace_na(., NA_character_) %>%
tolower(.) %>%
mutate_all(case_when(
str_detect(., "house") ~ "House",
str_detect(., "car|van") ~ "Vehicle",
str_detect(., "mouse") ~ "Mouse",
TRUE ~ NA_character_
)
)
我不断收到此错误消息:
UseMethod("tbl_vars") 中的错误: 没有适用于“c('matrix', 'array', 'character')”类对象的“tbl_vars”方法
【问题讨论】: