【发布时间】:2019-10-21 11:25:14
【问题描述】:
我想重新编码我的数据框中列名中任何位置包含字符串“calcium”的所有列。因此,我尝试将 grepl 与 dplyr 中的 mutate 结合使用,但出现错误。
知道我做错了什么吗?我希望这是可能的!
我尝试过的代码如下使用dplyr,
#Make the dataframe
library(dplyr)
fake <-data.frame(id=c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3),
time=c(rep("Time1",9), rep("Time2",9)),
test=c("calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc"),
score=rnorm(18))
df <- dcast(fake, id ~ time + test)
#My attempt
df <- df %>% mutate(category=cut(df[,grepl("calcium", colnames(df))], breaks=c(-Inf, 1.2, 6, 12, Inf), labels=c(0,1,2,3)))
#Error: 'x' must be numeric
#My second attempt
df <- df %>% mutate_at(vars(contains('calcium')), cut(breaks=c(-Inf, 1.2, 6, 12, Inf), labels=c(0,1,2,3)))
#Error: "argument "x" is missing, with no default"
【问题讨论】: