我有一个包含22000行和25列的大型数据集。我试图根据其中一列对我的数据集进行分组,并根据分组后的数据集获取另一列的min值。但是,问题是它只给我两列,其中包含分组后的列和具有min值的列……但是我需要与具有min值的行相关的其他列的所有信息。这里有一个简单的示例,只是为了使其可重现:
data<- data.frame(a=1:10, b=c("a","a","a","b","b","c","c","d","d","d"), c=c(1.2, 2.2, 2.4, 1.7, 2.7, 3.1, 3.2, 4.2, 3.3, 2.2), d= c("small", "med", "larg", "larg", "larg", "med", "small", "small", "small", "med"))
d<- data %>%
group_by(b) %>%
summarise(min_values= min(c))
d
b min_values
1 a 1.2
2 b 1.7
3 c 3.1
4 d 2.2
因此,我还需要与列a和d相关的信息,但是,由于列c中的值存在重复,我无法基于min_value列合并它们……我想知道在使用dplyr包时是否有任何方法保留其他列的信息。
我在这里找到了一些解释“dplyr:group_by、子集和摘要”和这里“使用group_by和摘要在子组中查找百分比”,但没有一个解决我的问题。
使用sqldf
:
library(sqldf)
# Two options:
sqldf('SELECT * FROM data GROUP BY b HAVING min(c)')
sqldf('SELECT a, b, min(c) min, d FROM data GROUP BY b')
输出:
a b c d
1 1 a 1.2 small
2 4 b 1.7 larg
3 6 c 3.1 med
4 10 d 2.2 med
这里有两个选项:a)<代码>过滤器c中都没有重复的最小值,因此a)和b)的结果相同。如果存在重复的最小值,方法a)将返回每个组的每个最小值,而b)将仅返回每个组中的一个最小值(第一个)。
答
> data %>% group_by(b) %>% filter(c == min(c))
#Source: local data frame [4 x 4]
#Groups: b
#
# a b c d
#1 1 a 1.2 small
#2 4 b 1.7 larg
#3 6 c 3.1 med
#4 10 d 2.2 med
或类似
> data %>% group_by(b) %>% filter(min_rank(c) == 1L)
#Source: local data frame [4 x 4]
#Groups: b
#
# a b c d
#1 1 a 1.2 small
#2 4 b 1.7 larg
#3 6 c 3.1 med
#4 10 d 2.2 med
b)
> data %>% group_by(b) %>% slice(which.min(c))
#Source: local data frame [4 x 4]
#Groups: b
#
# a b c d
#1 1 a 1.2 small
#2 4 b 1.7 larg
#3 6 c 3.1 med
#4 10 d 2.2 med
您可以使用< code>group_by而不使用< code > summary :
data %>%
group_by(b) %>%
mutate(min_values = min(c)) %>%
ungroup()
我的问题非常类似于在保留所有列信息的同时对数据应用group_by和摘要,但我想保留被排除的列,因为它们在分组后发生冲突。 到这里为止,我得到了我想要的。现在我想包含列类型,尽管它被排除在外,因为值是冲突的。这是我想得到的结果 我已经尝试了< code>ungroup()和一些< code>mutate和< code>unite的变体,但都无济于事,任何建议都将不胜感激
我想将两个哈希数组合并到一个新数组中: 现在这就是我正在寻找的结果: 我在Ruby文档中唯一能找到的合并选项是用另一个散列覆盖重复项。那么如何才能达到我需要的版本呢?
我想按变量对数据框进行分组,汇总另一个变量,但保留所有其他关联列。 在对数据应用group_by和SUMMISE,同时保留所有列的信息时,接受的答案是使用filter()或slice(),如果答案已经存在于数据中(即min,max),则这很好,但如果您希望使用生成新答案(即sum,mean)的函数,则这不起作用。 在应用group_by和sum(sum)时,但保留包含不相关的冲突数据的列?公认的答
在网上找不到任何资源,但我正在尝试优化我们的内部组件库,我正在尝试使树摇床更友好。 我怎样才能离开罗洛普。输出中的css文件以及在文件中维护它们的导入。 即E 输出。 这似乎是尽可能直截了当的,iv'e发现了类似的线索,但没有回应。https://github.com/egoist/rollup-plugin-postcss/issues/204 允许这样做基本上意味着使用我的项目的人只会自动获得
问题内容: 我有一张表,上面有一些植物的记录。植物可以具有多个名称,该表将其显示为不同的记录。该表称为new_plantsname 这继续超过3000条记录 我想要的是将具有相同Plantid的记录组合在一起,并在不同的列中显示不同的名称: 等等 我也想将结果保存到新表中 问题答案: 基本上,这是一个(您未指定RDBMS)我假设MySQL并且它没有函数,因此您将需要使用带有语句的聚合函数来复制它。
我有两个熊猫数据帧共享一个共同的列名。我想合并公共列名,但保留与第二个dataFrame中的所有不同列,其中公共列名称匹配。下面是两个数据帧的示例: 我希望预期的结果是: 也就是说,当列“A”匹配时,我希望保留I,J,K,L的行,并且不等于“NaN ”,对于DF1中的列也是如此。 我已经尝试了所有的pd.merge选项,但是它们似乎没有做我上面要求的事情。例如, 在“A”上匹配并将所有键保留在左侧