首页 > 解决方案 > 在 R 中对字符进行分组和总结?

问题描述

我在 R 中

> con_promedio_por_curso_transpuesta
                A          B          C           D
Description   "Abc"     "Bcd"      "Cde"      "Def"
mean(X7)  "5.000000" "4.105263" "4.733333"  "4.680000"
mean(X8)  "5.000000" "3.736842" "4.400000"  "4.760000"     
mean(X9)  "5.000000" "3.950000" "4.600000"  "4.840000"
mean(X10) "5.000000" "4.210526" "4.333333"  "4.560000"

我想删除第一行

"Abc"     "Bcd"      "Cde"      "Def"

我运行下一条指令:

without_first_row <- con_promedio_por_curso_transpuesta[-c(1),])

到现在为止,一切都还好,但是。如果我想对 without_first_row 进行分组和总结,我会得到一个错误。

UseMethod(“group_by_”)中的错误:没有适用于“group_by_”的适用方法应用于“c('matrix','character')”类的对象

我运行的数据类型,

> typeof(con_promedio_por_curso_transpuesta)
[1] "character"

我如何将“字符”转换为任何类型的数据进行分组?

谢谢。

标签: r

解决方案


您在创建位置附近的语法有错误,请without_first_row按照以下说明操作:

con_promedio_por_curso_transpuesta <-
  data.frame(
    row.names = c('Description','mean(X7)','mean(X8)','mean(X9)','mean(X10)'),
    'A' = c("Abc","5.000000","5.000000","5.000000","5.000000"),
    'B' = c("Bcd","4.105263","3.736842","3.950000","4.210526"),
    'C' = c("Cde","4.733333","4.400000","4.600000","4.333333"),
    'D' = c("Def","4.680000","4.760000","4.840000","4.560000"),
    'ID' = c(NA, 1, 1, 2, 2) # added for this example
  )

## without_first_row <- con_promedio_por_curso_transpuesta[-c(1), ]) <- this is your error, you added a ')' unnecessarily

without_first_row <- con_promedio_por_curso_transpuesta[-c(1), ] # with fixed syntax
> class(without_first_row)
[1] "data.frame"


# just to show you can group_by and summarise with data
without_first_row %>% 
  mutate_at(.vars = vars(c(A,B,C,D)), funs(as.numeric)) %>% 
  group_by(ID) %>% 
  summarise_all(mean)

推荐阅读