如何确定R中的开发率表?

时间:2017-08-25 17:55:36

标签: r dataframe

我试图确定动物在一定时间内达到发育阶段的比例。我有动物到达发育阶段的日子。

X<-filter(sort_delays, Treatment=="Control")%>%select('W-L5')

这是X

X <- data.frame(W.L5 = c(6L, 6L, 6L, 6L, 7L, 5L, 6L, 6L, 7L, 6L, 6L, 6L, 6L, 6L, 6L, 
     7L, 5L, 6L, 6L, 6L, 5L, 5L, 5L, 6L, 6L))

然后我用我需要的列创建了一个数据框,一个包含我的动物可能发展的不同日期,另一个包含输入计算比率所需的数据

Days<-c(4:9) 
number<-NA
Percent<-NA
Total_percent<-NA
df<-data.frame(Days, number, Percent, Total_percent)

然后我使用以下代码填充我的数据框:

#now start populating the number column
df[1,2]<- length(which(X==df[1,1]))
df[2,2]<- length(which(X==df[2,1]))
df[3,2]<- length(which(X==df[3,1]))
df[4,2]<- length(which(X==df[4,1]))
df[5,2]<- length(which(X==df[5,1]))
df[6,2]<- length(which(X==df[6,1]))

#use number to figure out percent
df$Percent<-(df$number/length(X[,1]))*100

#use percent to determine the total percentage
df[1,4]<- df[1,3]
df[2,4]<- df[2,3]+df[1,4]
df[3,4]<- df[3,3]+df[2,4]
df[4,4]<- df[4,3]+df[3,4]
df[5,4]<- df[5,3]+df[4,4]
df[5,4]<- df[6,3]+df[5,4]

结果df看起来像这样:

Days number Percent Total_percent
1    4      0       0             0
2    5      5      20            20
3    6     17      68            88
4    7      3      12           100
5    8      0       0           100
6    9      0       0           100

即使这样可以很好地创建我想要的表格,但我最终会处理更大的数据集以及更多的变化,导致我的“df&#39;从而产生了大量的代码。

我想知道是否有人知道更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我们没有sort_delays,但考虑X正确的输出:

X<-filter(sort_delays, Treatment=="Control")%>%select('W-L5')

df<-data.frame(Days=c(4:9))

df$number <- unlist(lapply(df$Days, function(y) length(which(X==y))))

df$Percent<-(df$number/length(X[,1]))*100                 

df$Total_percent <- cumsum(df$Percent)

这将产生预期的结果:

df
##   Days number Percent Total_percent
## 1    4      0       0             0
## 2    5      5      20            20
## 3    6     17      68            88
## 4    7      3      12           100
## 5    8      0       0           100
## 6    9      0       0           100