R 将多列转换为系数,并为其指定数值
我有一个数据框,它包含大约100列,称为“一些文本”。它们是字符,但实际上是一个有序因子NG我们可以使用mutate和cross 或者也可以使用FTTransform FTTransform MV完成此操作-用于多个柱的倒塌 -输出R 将多列转换为系数,并为其指定数值,r,dplyr,tidyr,R,Dplyr,Tidyr,我有一个数据框,它包含大约100列,称为“一些文本”。它们是字符,但实际上是一个有序因子NG我们可以使用mutate和cross 或者也可以使用FTTransform FTTransform MV完成此操作-用于多个柱的倒塌 -输出 # ABC_growth ZFG_growth #1 40 <NA> #2 40 <NA> #3 40 <NA> #4
# ABC_growth ZFG_growth
#1 40 <NA>
#2 40 <NA>
#3 40 <NA>
#4 40 <NA>
#5 40 <NA>
#6 12 12
#7 12 12
#8 12 12
#9 12 12
#10 12 12
#11 0 2.5
#12 0 2.5
#13 0 2.5
#14 0 2.5
#15 0 2.5
下面是一个使用lappy的data.table方法,它为每个元素调用一次factor函数。标高和标签用于设置唯一的因子值
df ABC_增长ZFG_增长测试
>1:MG-GG-GG
>2:MG-GG-GG
>3:MG-GG-GG
>4:MG-GG-GG
>5:MG-GG-GG
>6:LG
>7:LG
>8:LG
>9:LG
>10:LG
>11:NG SG
>12:NG SG
>13:NG SG
>14:NG SG
>15:NG SG
使用grep提取与提供的模式匹配的变量名
cols ABC_增长ZFG_增长
> 1: 40
> 2: 40
> 3: 40
> 4: 40
> 5: 40
> 6: 12 12
> 7: 12 12
> 8: 12 12
> 9: 12 12
> 10: 12 12
> 11: 0 2.5
> 12: 0 2.5
> 13: 0 2.5
> 14: 0 2.5
> 15: 0 2.5
由v0.3.0于2021-03-16创建,非常感谢您在这方面的帮助。我刚刚又仔细地看了一遍我的问题,我想我不清楚我是否还有其他专栏不需要转换为factor。我只需要转换名称中有增长的名称。很抱歉误解。@HCAI更新了帖子。非常感谢您在这方面的帮助。我刚刚又仔细地看了一遍我的问题,我想我不清楚我是否还有其他专栏不需要转换为factor。我只需要转换名称中有增长的名称。很抱歉误解您。请让@akrun告诉您如何正确处理此问题。他是第一个回答这个问题的人,应该得到公认的解决方案:在他更新他的答案后,我会更新我的答案。谢谢@akrun已经更新了他的,所以我也更新了我的解决方案。非常感谢您在这方面的帮助。我只能接受一个答案,你是对的。因为它有多个选项,所以我要选择akrun的Great!如果您还没有这样做并且倾向于这样做,您也可以对我的解决方案进行投票:
df$ABC_growth<-factor(dfH$ABC_growth) #convert to factor
df$ABC_growth <-ordered(dfH$ABC_growth,levels= c("SG","LG","MG","HG")) # order
levels(df$ABC_growth) <- c("2.5","12","40","100")
df <- df %>%
mutate(across(contains('growth'), ~ ordered(.,
levels = c("NG", "SG", "LG", "MG", "HG"),
labels = c('0', '2.5', '12', '40', '100'))))
nm1 <- grep('growth', names(df), value = TRUE)
df[nm1] <- lapply(df[nm1], function(x) ordered(x,
levels = c("NG", "SG", "LG", "MG", "HG"),
labels = c('0', '2.5', '12', '40', '100')))
library(collapse)
f1 <- function(x) {
ordered(x, levels = c("NG", "SG", "LG", "MG", "HG"),
labels = c('0', '2.5', '12', '40', '100'))
}
i1 <- grep('growth', names(df))
ftransformv(df, i1, f1)
# ABC_growth ZFG_growth
#1 40 <NA>
#2 40 <NA>
#3 40 <NA>
#4 40 <NA>
#5 40 <NA>
#6 12 12
#7 12 12
#8 12 12
#9 12 12
#10 12 12
#11 0 2.5
#12 0 2.5
#13 0 2.5
#14 0 2.5
#15 0 2.5