在dplyr中使用group_by()和summary()时,sd函数返回NA(df中没有NA值)
我有一个带有二进制数字响应变量(0或1)和几个响应变量的df。我正在尝试创建一个表,该表按类型(一个3级变量)和步骤(7级)分组。我想要每个步骤中每种类型的平均响应和标准偏差。输出表应该有21行,包含4个变量:类型、步长、平均值和sd 我的代码如下所示:在dplyr中使用group_by()和summary()时,sd函数返回NA(df中没有NA值),r,group-by,dplyr,summarize,R,Group By,Dplyr,Summarize,我有一个带有二进制数字响应变量(0或1)和几个响应变量的df。我正在尝试创建一个表,该表按类型(一个3级变量)和步骤(7级)分组。我想要每个步骤中每种类型的平均响应和标准偏差。输出表应该有21行,包含4个变量:类型、步长、平均值和sd 我的代码如下所示: data <- data %>% group_by(step, type) %>% summarise(Response = mean(Response), dev = sd(Response)) 数据%分组依据(步骤、
data <- data %>% group_by(step, type) %>% summarise(Response = mean(Response), dev = sd(Response))
数据%分组依据(步骤、类型)%>%总结(响应=平均值(响应),偏差=标准偏差(响应))
输出表正确生成平均值,但返回所有sd值的NA。我尝试使用'na.rm=TRUE'删除na值,但原始df中没有任何响应。有什么想法吗?来自?sd
:
长度为1或零的向量的标准偏差为“NA”
您的dplyr查询很可能会产生长度为1或长度为0的输出。以下操作应按您的预期进行:
data <- data %>% group_by(step, type) %>% summarise(Response_mean = mean(Response), dev = sd(Response))
正在新表中创建一个名为“Response”的变量,其中包含一个值—原始数据中向量“Response”的平均值。以下部分:
dev = sd(Response)
尝试计算单个值的标准偏差
为了举例说明,您也可以尝试以下方法:
data <- data %>% group_by(step, type) %>% summarise(Response = mean(Response), Response_plus_10 = Response + 10)
数据%groupby(step,type)%%>%总结(响应=平均值(响应),响应加上响应10=响应+10)
希望这能澄清问题。如果只向
sd()
输入一个值,它将返回NA
。试试sd(1)。请稍等。如果只有一个值,则不计算sd。
data <- data %>% group_by(step, type) %>% summarise(Response = mean(Response), Response_plus_10 = Response + 10)