Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将R中一个变量的数据与另一个变量的子集进行比较_R - Fatal编程技术网

如何将R中一个变量的数据与另一个变量的子集进行比较

如何将R中一个变量的数据与另一个变量的子集进行比较,r,R,我正在研究两个变量“邻里关系”和“效用支出”。第一个是一个名义变量,其中所有记录都是“城市”、“城镇”或“农村”。第二个变量是一个连续变量,它只是一个给定家庭在一个月内在公用事业上的支出金额(数据集中从500美元到6000美元不等) 我的问题是,使用这两个变量,我想在邻里变量中找到“城市”中所有记录的公用事业支出的平均值,以便进行z检验,看看它是否与整个数据集的平均值有显著差异。我肯定有一个命令我可以使用,但我还没有找到一个孤立的平均值。考虑到我有3000条记录要筛选,找到这些信息的最佳方式是什

我正在研究两个变量“邻里关系”和“效用支出”。第一个是一个名义变量,其中所有记录都是“城市”、“城镇”或“农村”。第二个变量是一个连续变量,它只是一个给定家庭在一个月内在公用事业上的支出金额(数据集中从500美元到6000美元不等)

我的问题是,使用这两个变量,我想在邻里变量中找到“城市”中所有记录的公用事业支出的平均值,以便进行z检验,看看它是否与整个数据集的平均值有显著差异。我肯定有一个命令我可以使用,但我还没有找到一个孤立的平均值。考虑到我有3000条记录要筛选,找到这些信息的最佳方式是什么

我想找出所有以“城市”作为其邻里价值的记录的效用支出的平均值。如何执行此操作?

使用dplyr软件包:

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"))

df
aggregate(效用支出、列表(邻居)、平均值)
感谢您的帮助。在测试之后,关于您的代码行,我唯一要注意的是,对于非数字搜索(例如L2),我必须使用语音标记,否则我会收到一个错误,即:mean(df[df$YPred==“L2”,“emergency”])