r - 在 R 中使用列名并汇总
问题描述
我想在我的数据中计算一些汇总值。数据框中有趣的列被命名exppw...._1003
,pw...._1003
其中....
代表例如0506
,0607
等等。列exppw...._1003
中的数据来自实验,而列pw...._1003
中的数据来自我们的“标准程序”。
我想比较两个对应列的汇总值,例如pw0708_1003
和exppw0708_1003
。
rt2020_2 %>%
select(id_intern, persGew, matches("exppw...._1003"), matches("pw...._1003")) %>%
summarise(across(starts_with("pw"),
list(
gewSum = ~ sum(persGew)/1e5,
uWHK = ~ n_distinct(id_intern[.x > 0]),
uWHKExp = ~ n_distinct(id_intern[(paste0("exp", cur_column()))>0])
)
))
我希望你能认出我打算在这里做什么。我取以“pw”开头的列并计算值> 0的不同情况。我现在的问题是,我在学期中的情况id_intern[(paste0("exp", cur_column()))>0]
并没有像我希望的那样工作,即它总是产生真实的结果。我试图取消引用paste0("exppw", cur_column())
,使其显示为:
rt2020_2 %>%
select(id_intern, persGew, ges, matches("exppw...._1003"), matches("pw...._1003")) %>%
summarise(across(starts_with("pw"),
list(
gewSum = ~ sum(persGew)/1e5,
uWHK = ~ n_distinct(id_intern[.x > 0]),
uWHKExp = ~ n_distinct(id_intern[!!(paste0("exp", cur_column()))>0])
)
))
但这会导致错误:
Error: `cur_column()` must only be used inside `across()`.
你能帮助我吗?还是有更好的方法来解决我的问题?谢谢你的帮助。
解决方案
几个问题。目前尚不清楚您在 gewSum 中想要什么。是 sum(persGew) 还是所有以 pw 开头的列的总和?uWHK 等也是如此。 pw 列或 id_intern 列中的内容是不同的计数吗?
[ ]
此外,在摘要中使用也不是一个好主意。可能更好地mutate
创建一些列来检查您的标准。
推荐阅读
- c# - BeginInvoke 和类数组
- outlook - Okta - 使用 Microsoft Graph API 与 Outlook 日历集成
- angular - Highcharts 中的类别和工具提示
- python - 如何确定由数据等价对强加的分组?
- maven - Maven 忽略来自 pom.xml 的插件配置
- php - 无法从 Slim v4 中的中间件分配树枝参数
- powerbi - Power BI Desktop.. 自动刷新和发布
- c# - EF dbcontext 在 dynamo 自定义节点中返回一个空的 dbset
- domparser - 使用 DOM 将 JTable 数据写入带有适当元素标签的 XML
- python-3.x - 当我尝试使用 conda 命令更新所有内容时出现“请求”错误