R从本地文件计算平均值和中值
我是R的新手,所以这可能是显而易见的 到目前为止,我掌握的代码是:R从本地文件计算平均值和中值,r,statistics,R,Statistics,我是R的新手,所以这可能是显而易见的 到目前为止,我掌握的代码是: rm(list=ls()) kdata = read.table("data_fra_klassen_v20.txt",header = TRUE,) library(openxlsx) kdata = read.xlsx("data_fra_klassen_v20.xlsx") head(kdata) 以下是数据集: gender shoe height colour Man
rm(list=ls())
kdata = read.table("data_fra_klassen_v20.txt",header = TRUE,)
library(openxlsx)
kdata = read.xlsx("data_fra_klassen_v20.xlsx")
head(kdata)
以下是数据集:
gender shoe height colour
Man 43 176 Green
Woman 36 166 Brown
Man 43 182 Other
Man 36 151 Brown
Woman 43 183 Blue
Man 44 184 Blue
Woman 38 164 Brown
Woman 37 160 Brown
Man 41 175 Brown
我试图找出每个性别的平均值和中位数
我在想可能是这样的:
heightmen = kdata$height[kdata$gender=="Man"]
mean(heightmen)
然而,它似乎找不到任何值 您可以使用R中的
dplyr
软件包:
使用mutate
:
library(dplyr)
df %>%
group_by(gender)%>%
mutate(mean_height = mean(height))%>%
mutate(median_height = median(height)) %>%
select(gender, mean_height, median_height) %>%
unique()
或使用摘要
:
df %>%
group_by(gender) %>%
summarise(mean_height = mean(height), median_height = median(height))
# A tibble: 2 x 3
# Groups: gender [2]
# gender mean_height median_height
#<fct> <dbl> <dbl>
#1 Man 174. 176
#2 Woman 168. 165
df%>%
按性别划分的组别%>%
总结(平均高度=平均高度,中间高度=中间高度)
#一个tibble:2x3
#团体:性别[2]
#性别平均身高中位数身高
#
#一名男子174。176
#2女168。165
数据
df其他解决方案与以前的代码类似,但使用子集
mean(subset(kdata,gender == "Man")$height)
mean(subset(kdata,gender == "Woman")$height)
试试这个
library(dplyr)
kdata %>% group_by(gender) %>% summarise(median = quantile(height, 0.5), mean = mean(height))
@Ben首先使用这个install.packages(“tidyverse”)
,然后运行上面的代码..我认为最好使用summary
而不是mutate
来获得性别的平均值。这似乎已经解决了问题。我来看看这是否更好@JonathanV.Solórzanow你说它找不到任何值是什么意思?我不明白为什么你的代码不能让我明白173.6实际上你的代码应该可以正常工作。检查列的格式是否正确,尤其是类(kdata$height)
应生成“数值”
或“整数”
。作为一种解决方法,请尝试As.numeric(As.character(kdata$height))[kdata$gender==“Man”]
@jay.sf有人给了我另一种解决方案,不过,我会尝试一下你所说的,以便更好地理解r。
library(dplyr)
kdata %>% group_by(gender) %>% summarise(median = quantile(height, 0.5), mean = mean(height))