r - 如何在 R 中对 .csv 文件进行排序
问题描述
我有一个已导入 R 的 .csv 文件。它包含一个带有位置的列,某些位置会根据该位置被调查的次数而重复。我有另一列总编号。塑料物品。
我想将出现多次的位置的塑料物品数量加在一起,并创建一个单独的列,其中包含总数。塑料和另一列的没有。该位置出现的次数。
我不确定如何做到这一点,任何帮助将不胜感激。
解决方案
使用dplyr
:
data %>%
group_by(location) %>%
mutate(TOTlocation=n(),TOTitems=sum(items))
这是一个基本解决方案,它做的事情几乎相同:
data[c("TOTloc","TOTitem")]<-t(sapply(data$location, function(x)
c(TOTloc=sum(data$location==x),
TOTitem=sum(data$items[data$location==x]))))
请注意,在这两种情况下,您都不需要对任何内容进行排序 -dplyr
您可以使用group_by
仅对属于由某个列的内容确定的组的数据集部分执行每个操作。在我的基本解决方案中,我使用分解位置列表sapply
,然后再次为每一行重新计算 TOTloc 和 TOTitem。这可能不是一个非常有效的解决方案。可能会使用更好的解决方案split
,但由于某种原因,我无法使其与我制作的数据集一起使用,所以也许其他人可以建议如何最好地做到这一点。
推荐阅读
- fortran - Fortran 编译错误:目标“../lib/libSPheno.a(Mathematics.o)”的生成文件配方失败
- python - 清理 .txt 并计算最常用的单词
- maven - ArtifactSet 和过滤器之间的区别
- rest - 使用 Nightwatch.js 实现 REST API 测试的最佳方式
- html - 如何突出显示在 IE 11 中仅适用于键盘用户?
- visual-studio - VSTS 和 VS 2017 pro - 团队资源管理器除了 master 看不到其他分支
- python - 使用 python3 为 msvc 构建 boost python - 链接器错误
- android - android编译器错误,文件中没有错误
- android - Mockito 不适用于 androidTest
- node.js - 如何从当前 Lambda 函数调用另一个 Lambda 函数?