如何确定R中同一列中多个类别的标准差

时间:2016-06-10 11:56:32

标签: r

我有两列,'姓名'和'价格'。我想确定列的每个组/类别的价格标准差'名称'。这些列采用R中的数据框形式。

                   Name    Price
1               Llandudno 21700000
2               Llandudno 15500000
3               Llandudno  9800000
4                Hout Bay  2995000

3 个答案:

答案 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