如何将R中一个变量的数据与另一个变量的子集进行比较
我正在研究两个变量“邻里关系”和“效用支出”。第一个是一个名义变量,其中所有记录都是“城市”、“城镇”或“农村”。第二个变量是一个连续变量,它只是一个给定家庭在一个月内在公用事业上的支出金额(数据集中从500美元到6000美元不等) 我的问题是,使用这两个变量,我想在邻里变量中找到“城市”中所有记录的公用事业支出的平均值,以便进行z检验,看看它是否与整个数据集的平均值有显著差异。我肯定有一个命令我可以使用,但我还没有找到一个孤立的平均值。考虑到我有3000条记录要筛选,找到这些信息的最佳方式是什么 我想找出所有以“城市”作为其邻里价值的记录的效用支出的平均值。如何执行此操作?使用dplyr软件包:如何将R中一个变量的数据与另一个变量的子集进行比较,r,R,我正在研究两个变量“邻里关系”和“效用支出”。第一个是一个名义变量,其中所有记录都是“城市”、“城镇”或“农村”。第二个变量是一个连续变量,它只是一个给定家庭在一个月内在公用事业上的支出金额(数据集中从500美元到6000美元不等) 我的问题是,使用这两个变量,我想在邻里变量中找到“城市”中所有记录的公用事业支出的平均值,以便进行z检验,看看它是否与整个数据集的平均值有显著差异。我肯定有一个命令我可以使用,但我还没有找到一个孤立的平均值。考虑到我有3000条记录要筛选,找到这些信息的最佳方式是什
library(dplyr)
dt<-data.frame(Neighbourhood=c("city","rural","town","city","rural"),UtilitySpending=c(500,753,438,3361,4717))
dt<-dt %>% group_by(Neighbourhood) %>%
dplyr::summarize(total_UtilitySpending=mean(UtilitySpending)) %>%
as.data.frame() %>%
filter(Neighbourhood=="city")
库(dplyr)
dt%
dplyr::汇总(总效用支出=平均(效用支出))%>%
as.data.frame()%>%
过滤器(邻里=“城市”)
这可以在一行中以R为基数轻松完成。由于您没有提供数据,我使用的是前一个问题中的一组,请参见下文
使用此data.frame,您可以通过子集找到任何平均值等。这里的示例是当变量YPred
等于L2
时,计算列Urgent
的平均值:
mean( df[ df$YPred == "L2", "Urgent" ] )
[1] 44
下面是示例数据:
df <- structure(list(Tag = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L
), YPred = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L
), .Label = c("L1", "L2", "L3", "L4", "L5"), class = "factor"),
Long = c(1004L, 544L, 545L, 282L, 1L, 2068L, 3006L, 3711L,
2342L, 33L), Medium = c(108L, 252L, 211L, 149L, 0L, 17L,
110L, 248L, 341L, 4L), short = c(58L, 118L, 131L, 73L, 4L,
0L, 43L, 150L, 189L, 2L), Urgent = c(5L, 70L, 65L, 24L, 5L,
22L, 18L, 31L, 96L, 2L)), .Names = c("Tag", "YPred", "Long",
"Medium", "short", "Urgent"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10"))
dfaggregate(效用支出、列表(邻居)、平均值)
感谢您的帮助。在测试之后,关于您的代码行,我唯一要注意的是,对于非数字搜索(例如L2),我必须使用语音标记,否则我会收到一个错误,即:mean(df[df$YPred==“L2”,“emergency”])