我有两列“名称”和“价格”。我想确定“名称”列中每个组/类别的价格的标准偏差。这些列是在R的数据帧我如何确定同一列中多个类别的标准偏差R
Name Price
1 Llandudno 21700000
2 Llandudno 15500000
3 Llandudno 9800000
4 Hout Bay 2995000
我有两列“名称”和“价格”。我想确定“名称”列中每个组/类别的价格的标准偏差。这些列是在R的数据帧我如何确定同一列中多个类别的标准偏差R
Name Price
1 Llandudno 21700000
2 Llandudno 15500000
3 Llandudno 9800000
4 Hout Bay 2995000
假设你有一个名为df的数据框。下面是使用aggregate
碱R法:
aggregate(Price ~ Suburb, data=df, FUN=sd)
这创建了由名称具有标准偏差一个data.frame。
的aggregate
使用data.table
包等效,情况如下:
library(data.table)
setDT(df)
df[, list("Name"=sd(Price)), by=.(Suburb)]
数据
df <- read.table(header=TRUE, text="Suburb Price
Llandudno 21700000
Llandudno 15500000
Llandudno 9800000
Hout_Bay 2995000
Hout_Bay 3995000")
可以使用dplyr
的形式,
library(dplyr)
df %>%
group_by(Name) %>%
summarise(new = sd(Price))
#Source: local data frame [2 x 2]
# Suburb new
# (chr) (dbl)
#1 Hout Bay NaN
#2 Llandudno 5951750
注意,“豪特湾”给出的NaN这是意料之中的,因为你只能有一个值
这是我第一次接触管道操作员。非常感谢你! –
@Richard没问题。 – Sotos
我们可以使用sqldf
。好处是,如果我们也在sql
上工作,我们不需要翻译代码。
library(sqldf)
sqldf("SELECT Suburb, stdev(Price) AS SDPrice
FROM df1
GROUP BY Suburb")
# Suburb Price
#1 Hout Bay 0
#2 Llandudno 5951750
这种方法有多快? –
@MaratTalipov如果我们正在处理庞大的数据库,那么在数据库上使用'sql'命令会比在R中读取它快。但是,如果它是一个小数据集,R中的sql命令会比较慢。 – akrun
数据集不大可惜。 'sqldf'很棒。我很感激。 –
请提供[MCVE] –
我会记住这一点。欢呼声 –