Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在缺少数据的R中添加长格式的术语_R - Fatal编程技术网

在缺少数据的R中添加长格式的术语

在缺少数据的R中添加长格式的术语,r,R,我试图在name变量下添加col1出现的次数,忽略缺少的值。它应该是2倍,但是当我使用length和count函数时,它们总是返回3 M = data.frame( Name = c('name','name1','name','name1','name','name1'), Col1 = c(NA,1,3,4,5,NA) , Col2 = c(1,1,NA,5,8,4)) myData <- aggregate(M[,2], by = list(

我试图在name变量下添加col1出现的次数,忽略缺少的值。它应该是2倍,但是当我使用length和count函数时,它们总是返回3

M = data.frame( Name = c('name','name1','name','name1','name','name1'), Col1 = c(NA,1,3,4,5,NA) , Col2 = c(1,1,NA,5,8,4))

myData <- aggregate(M[,2],
                    by = list(VAR = M$Name), 
                    FUN = function(x) c(mean = mean(x,na.rm=T), sd = sd(x,na.rm=T),n=length(x)))
myData <- do.call(data.frame, myData)

myData
#> x.n
#   3
#I want it to say 2 becuase the number only appears twice this variable. 
#> x.n
#   2
M=data.frame(Name=c('Name','name1','Name','name1','Name','name1','name1'),Col1=c(NA,1,3,4,5,NA),Col2=c(1,1,NA,5,8,4))
myData x.n
#   2

尝试编辑您的函数以包含
na。省略(x)
如下-

M = data.frame( Name = c('name','name1','name','name1','name','name1'), Col1 = c(NA,1,3,4,5,NA) , Col2 = c(1,1,NA,5,8,4))

myData <- aggregate(M[,2],
                    by = list(VAR = M$Name), 
                    FUN = function(x) c(mean = mean(x,na.rm=T), sd = sd(x,na.rm=T),n=length(na.omit(x))))
myData <- do.call(data.frame, myData)

#     VAR x.mean     x.sd x.n
# 1  name    4.0 1.414214   2
# 2 name1    2.5 2.121320   2
M=data.frame(Name=c('Name','name1','Name','name1','Name','name1','name1'),Col1=c(NA,1,3,4,5,NA),Col2=c(1,1,NA,5,8,4))

myData尝试编辑您的函数以包含
na。省略(x)
如下-

M = data.frame( Name = c('name','name1','name','name1','name','name1'), Col1 = c(NA,1,3,4,5,NA) , Col2 = c(1,1,NA,5,8,4))

myData <- aggregate(M[,2],
                    by = list(VAR = M$Name), 
                    FUN = function(x) c(mean = mean(x,na.rm=T), sd = sd(x,na.rm=T),n=length(na.omit(x))))
myData <- do.call(data.frame, myData)

#     VAR x.mean     x.sd x.n
# 1  name    4.0 1.414214   2
# 2 name1    2.5 2.121320   2
M=data.frame(Name=c('Name','name1','Name','name1','Name','name1','name1'),Col1=c(NA,1,3,4,5,NA),Col2=c(1,1,NA,5,8,4))

myData这是一个
tidyverse
解决方案

library(tidyverse);
M %>%
    gather(k, v, -Name) %>%
    filter(complete.cases(.) & k == "Col1") %>%
    group_by(Name) %>%
    summarise(mean = mean(v), sd = sd(v), n = n())
## A tibble: 2 x 4
#  Name   mean    sd     n
#  <fct> <dbl> <dbl> <int>
#1 name   4.00  1.41     2
#2 name1  2.50  2.12     2
library(tidyverse);
M%>%
聚集(k,v,-名称)%>%
筛选器(完整的.cases(.)和k==“Col1”)%>%
分组单位(名称)%>%
总结(平均值=平均值(v),标准差=标准差(v),n=n()
##一个tibble:2x4
#名称平均值sd n
#     
#1名称4.00 1.41 2
#2名称1 2.50 2.12 2

说明:我们从宽改长,通过
complete.cases
删除带有
NA
条目的行,并计算
Name
分组条目上所需的汇总统计信息

这里有一个
tidyverse
解决方案

library(tidyverse);
M %>%
    gather(k, v, -Name) %>%
    filter(complete.cases(.) & k == "Col1") %>%
    group_by(Name) %>%
    summarise(mean = mean(v), sd = sd(v), n = n())
## A tibble: 2 x 4
#  Name   mean    sd     n
#  <fct> <dbl> <dbl> <int>
#1 name   4.00  1.41     2
#2 name1  2.50  2.12     2
library(tidyverse);
M%>%
聚集(k,v,-名称)%>%
筛选器(完整的.cases(.)和k==“Col1”)%>%
分组单位(名称)%>%
总结(平均值=平均值(v),标准差=标准差(v),n=n()
##一个tibble:2x4
#名称平均值sd n
#     
#1名称4.00 1.41 2
#2名称1 2.50 2.12 2

说明:我们从宽改长,通过
complete.cases
删除带有
NA
条目的行,并计算
Name
分组条目上所需的汇总统计信息

或者只使用
na.省略
。类似于
n=length((na.ommit(x))
的方法更合适。或者只使用
na.ommit
。类似于
n=length((na.omit(x))
的方法更合适。