【问题标题】:Problem adding computed columns in `group_by()` Error in dplyr in R在 R 中的 dplyr 中添加计算列时出现问题
【发布时间】:2023-03-18 00:20:01
【问题描述】:

如图所示,我有一个 .csv 文件。我正在尝试创建图表。我将此图像中的数据帧传递给函数 multi_bar(dt)

代码使用 FOR LOOP 并一次性获取第 1 列 (PS) 和第 2 列 (APS1),然后使用 for 循环和 dplyr 使用第 1 列 (PS) 和第 2 列 (APS2)。基本上我在每次迭代中都需要第 1 列,但另一列将不断从 2,3 等更改。此处的代码未显示图表代码,但当代码在 for 循环迭代中到达第 3 列 (i=3) 时出现错误。它适用于 i=2。

multi_bar=function(dt)
{
  library(dplyr)
  library(ggplot2)
  for(i in 2:ncol(dt))
  {
    col1 = names(dt)[1]
    col2=names(dt[i])
    
    #df=select(x,x[,1], x[,i])
    df=dt[,c(1,i)]
    df1=df%>%
      group_by(df[,1], df[,i])%>%
      summarize(n=n())
    
    colnames(df1) <- c(col1,col2,'Count')
    col3=names(df1)[3]
   
    ls=list(df1,col1,col2,col3,ncol(dt))
    
}  
    
  return(ls)     
}

当我将dataframe传递给这个函数multi_bar时,如图所示(读取csv文件后),出现以下错误

错误:在group_by() 中添加计算列时出现问题。 x mutate() 输入 ..2 有问题。 我..2 = df[, i]。 选择了 x 个未定义的列 运行rlang::last_error() 以查看错误发生的位置。 另外:警告信息: 错误:在group_by() 中添加计算列时出现问题。 x mutate() 输入 ..2 有问题。 我..2 = df[, i]。 选择了 x 个未定义的列 运行rlang::last_error() 看看哪里出错了。

【问题讨论】:

  • 那么当你运行rlang::last_error() 时会发生什么?

标签: r for-loop dplyr


【解决方案1】:

我认为以长(整齐)格式提供数据会让您受益匪浅。然后您可以使用count 计算每个值在列中出现的次数。

我们没有要测试的数据,但应该是这样的 -

library(dplyr)
library(tidyr)

df <- dt %>%
        pivot_longer(cols = -PS) %>%
        count(PS, name, value, name = 'Count')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多