首页 > 解决方案 > 如何在 R 中对 .csv 文件进行排序

问题描述

我有一个已导入 R 的 .csv 文件。它包含一个带有位置的列,某些位置会根据该位置被调查的次数而重复。我有另一列总编号。塑料物品。

我想将出现多次的位置的塑料物品数量加在一起,并创建一个单独的列,其中包含总数。塑料和另一列的没有。该位置出现的次数。

我不确定如何做到这一点,任何帮助将不胜感激。

标签: rsortingcolumnsorting

解决方案


使用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,但由于某种原因,我无法使其与我制作的数据集一起使用,所以也许其他人可以建议如何最好地做到这一点。


推荐阅读