【问题标题】:Make operations on a subset of a dataset [duplicate]对数据集的子集进行操作[重复]
【发布时间】:2019-10-28 13:46:13
【问题描述】:

考虑以下数据集:

a <- c(1,23,18,47,15,56,67,43,9)
b <- c("A","B","B","C","C","B","D","A","C")
df <- data.frame(var1=a, var2=b)

我需要在 df 的子部分(基于 var2 值)上运行函数(例如 mean()),如下所示:

df_A <- subset(df,var2=="A")
mean_A <- mean(df_A$var1)

df_B <- subset(df,var2=="B")
mean_B <- mean(df_B$var1)

df_C <- subset(df,var2=="C")
mean_C <- mean(df_C$var1)

df_D <- subset(df,var2=="D")
mean_D <- mean(df_D$var1)

我在这里面临的最大困难是我事先不知道我在 var2 中有多少不同的值。在我的示例中,我有 4 种可能性:“A”、“B”、“C”和“D”。但实际上,它是随机的……有时我有一个数据集,在 var2 中有 2 个不同的值,有时是 15,有时更多……

我认为循环可能是一个很好的解决方案,但我有点迷茫......

你能帮忙吗?提前致谢。

【问题讨论】:

标签: r loops subset


【解决方案1】:

最简单的方法是使用 dplyr 包

a <- c(1,23,18,47,15,56,67,43,9)
b <- c("A","B","B","C","C","B","D","A","C")
df <- data.frame(var1=a, var2=b)

library(dplyr)
df2 <- df %>% 
  group_by(var2) %>% 
  summarise(mean=mean(var1))
df2

#output
# # A tibble: 4 x 2
# var2   mean
# <fct> <dbl>
# 1 A      22  
# 2 B      32.3
# 3 C      23.7
# 4 D      67

【讨论】:

  • 很高兴为您提供帮助。如果这回答了您满意的问题,可以将答案标记为已接受(在投票功能下打勾),让其他人知道该问题已得到回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 2019-03-16
  • 1970-01-01
  • 2019-02-16
  • 2013-04-15
  • 2022-10-13
  • 2017-03-18
相关资源
最近更新 更多