我有两列,'姓名'和'价格'。我想确定列的每个组/类别的价格标准差'名称'。这些列采用R中的数据框形式。
Name Price
1 Llandudno 21700000
2 Llandudno 15500000
3 Llandudno 9800000
4 Hout Bay 2995000
答案 0 :(得分:1)
您可以使用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
请注意,'Hout Bay'给出的NaN是预期的,因为您只有一个值
答案 1 :(得分:1)
假设您有一个名为df的data.frame。这是使用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")
答案 2 :(得分:1)
我们可以使用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