r - Dplyr - 错误 : column '' has unsupported type

标签 r dataframe aggregate-functions dplyr

在 data.frame 上使用 dplyr 来计算每组字符变量的缺失观察数时,我遇到了一个奇怪的问题。这会产生错误“错误:列”具有不受支持的类型。

为了复制它,我创建了一个子集。子集 rdata 文件可在此处获得:
rdata file including dftest data.frame
第一的。使用我提供的子集,代码:

dftest %>%
  group_by(file) %>%
  summarise(missings=sum(is.na(v131)))

会产生错误:
错误:"file"列的类型不受支持

str(dftest) 返回:
'data.frame':   756345 obs. of  2 variables:
 $ file: atomic  bjir31fl.dta bjir31fl.dta bjir31fl.dta bjir31fl.dta ...
  ..- attr(*, "levels")= chr 
 $ v131: Factor w/ 330 levels "not of benin",..: 6 6 6 6 1 1 1 9 9 9 ...

但是,取子集的一个子集,然后再次运行 dplyr 命令,将创建预期的输出。
dftest <- dftest[1:756345,]
dftest %>%
  group_by(file) %>%
  summarise(missings=sum(is.na(v131)))

str(dftest) 现在返回:
'data.frame':   756345 obs. of  2 variables:
 $ file: chr  "bjir31fl.dta" "bjir31fl.dta" "bjir31fl.dta" "bjir31fl.dta" ...
 $ v131: Factor w/ 330 levels "not of benin",..: 6 6 6 6 1 1 1 9 9 9 ...

任何人都对可能导致此错误的原因以及如何处理有任何建议。在我的原始文件中,我有 300 个变量,而 dplyr 指出其中大部分是不受支持的类型。

谢谢。

最佳答案

这似乎是使用 filter 的问题当数据框的列具有属性时。例如,

> df = data.frame(x=1:10, y=1:10)
> filter(df, x==3) # Works
  x y
1 3 3

x 添加属性柱子。请注意 str(df)显示 xatomic现在,和 filter不起作用:
> attr(df$x, 'width')='broad'
> str(df)
'data.frame':   10 obs. of  2 variables:
 $ x: atomic  1 2 3 4 5 6 7 8 9 10
  ..- attr(*, "width")= chr "broad"
 $ y: int  1 2 3 4 5 6 7 8 9 10
> filter(df, x==3)
Error: column 'x' has unsupported type

要使其工作,请删除该属性:
> attr(df$x, 'width') = NULL
> filter(df, x==3)
  x y
1 3 3

关于r - Dplyr - 错误 : column '' has unsupported type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27554429/

相关文章:

r - 将数据帧行转换为字符向量时出错

r - 将散点图和折线图与 R 中的 highcharter 相结合

sql - 左连接和 count() 缺少行所需的解释

sql - postgres中数组聚合的算术运算

r devtools test() 错误但测试 test_file() 有效

r - 如何删除 R Markdown 生成的 HTML 文件左侧的 "padding"

scala - UDF 在 Scala 中按键过滤 map

python - 使用多索引列堆叠多索引数据框

python - 在循环中选择数据框的列

sql - sqlite的聚合函数