gpt4 book ai didi

r - dplyr 函数 group_by 错误

转载 作者:行者123 更新时间:2023-12-04 10:33:55 26 4
gpt4 key购买 nike

我对库 dplyr 的函数有问题。我想按各种值(“group_by”)对数据框进行分组。其中一些值是固定的(始终相同),而另一些是通过向量引入的​​。该向量将具有可变维度。当数据框将被分组时,我想应用函数“mutate”。

我尝试通过不同的方式来做到这一点。第一个被复制到下面,包括一个循环,遍历向量 campToAgregate(位于对数据帧进行分组所需的值的位置):

campToAgregate = c("via","nomDem")

dadesCom <- dades

for(i in 1:length(campToAgregate)){
if(i==1){
dadesCom1 <- dadesCom %>% dplyr::group_by(dadesCom[,which(names(dadesCom) == campToAgregate[i])], dat, add=TRUE) %>%
dplyr::mutate(vel1 = round(weighted.mean(vel, longPk, na.rm = TRUE), 0))
dadesCom1 <- dadesCom1[,-(ncol(dadesCom1)-1)]
}else{
dadesCom2 <- dadesCom1 %>% dplyr::group_by(dadesCom1[,which(names(dadesCom1) == campToAgregate[i])], add=TRUE) %>%
dplyr::mutate(vel1 = round(weighted.mean(vel, longPk, na.rm = TRUE), 0))
}
}

dades 是数据框,它包含很多值,包括上面函数中提到的值:“vel”和“longPk”。

当我运行此代码时,控制台中出现以下错误:
Error in mutate_impl(.data, dots) : not compatible with STRSXP

而且不知道怎么解决。。。

我也尝试通过不同的方式做到这一点:
for(i in 1:length(campToAgregate)){
if(i==1){
dadesCom <- dadesCom %>% dplyr::group_by(dadesCom[,which(names(dadesCom) == campToAgregate[i])], dat, add=TRUE)
}else{
dadesCom <- dadesCom %>% dplyr::group_by(dadesCom1[,which(names(dadesCom1) == campToAgregate[i])], add=TRUE)
}
}

dadesCom <- dadesCom %>% dplyr::mutate(vel = round(weighted.mean(vel, longPk, na.rm = TRUE), 0))

但在这种情况下,函数 group_by 不起作用。 mutate 函数有效,但它应用于没有组的数据帧。

有谁知道我在代码中犯了什么样的错误?谢谢你。

最佳答案

我能够重现该错误。零碎地测试代码,我们发现

dadesCom2 <- dadesCom1 %>%
dplyr::group_by(dadesCom1[,which(names(dadesCom1) == campToAgregate[i])], add=TRUE) %>%
dplyr::mutate(vel1 = round(weighted.mean(vel, longPk, na.rm = TRUE), 0))

产生这个错误

Error in grouped_df_impl(data, unname(vars), drop) : Column dadesCom1[, which(names(dadesCom1) == i)] can't be used as a grouping variable because it's a tbl_df/tbl/data.frame



只需添加
dadesCom1 <- as.data.frame(dadesCom1)

到你的第一句话的结尾。

我还建议使用 library(dplyr)并删除您的在线通话

关于r - dplyr 函数 group_by 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47534141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com