我通过rnorm(n)获得n个随机变量,并通过以下数字获得n个数字:
sample (1:100, n, replace = T)
我连接这两个数据,以便我有2n个随机变量(= x)
问题是make函数(函数的名称是mysplit)将数据拆分为整数和非整数并得到每个均值或中位数(可选)
我想我应该使用函数split或tapply但我不知道如何将数据拆分为整数和非整数
如果有像
这样的可选部分,我该如何设置可选功能(中位数)mysplit(x,n,method = "median")
答案 0 :(得分:3)
我们可以使用split
lapply(split(v1, grepl("\\.", v1)), mean)
如果我们需要一个功能
mysplit <- function(x, n, method = "median"){
lst <- split(x, grepl("\\.", x))
lapply(lst, method)
}
mysplit(v1, 2, "median")
v1 <- c(1, 2.3, 4.5, 3)
答案 1 :(得分:0)
我假设您的分页数据看起来像数据d:
d<-data.table(y=as.vector(rbind(rnorm(100),seq(1.0:100.0))))
现在,拆分功能是
splitit<-function(d,m)
{
print(m)
dd<-data.table(x=d[!(y%%1==0),],n=d[y%%1==0,])
if(as.numeric(m)==1){ddd<-data.table(mx=mean(dd$x),mn=mean(dd$n))}
if(as.numeric(m)==0){ddd<-data.table(mx=median(dd$x),mn=median(dd$n))}
return(ddd)
}
c<-splitit(d,1)
输出:
> c
mx mn
1: 0.05145718 50.5
> c<-splitit(d,1)
[1] 1
> c
mx mn
1: -0.05396085 50.5
这应该有帮助!