对于每列的循环数据帧组合输出

时间:2017-10-16 12:49:58

标签: r

如果这被认为是我应该能够从其他询问中回答的问题,请提前道歉。

我有一个包含多列的数据框 - 如下所示:

v1<-c(1450,NA, NA, 1466,NA,NA,1650,1654,1943,NA,2568,NA, 7586)
v2<-c(1450,NA, NA, 1466,1561,NA,1650,NA,NA,NA,2568,NA, 7586)
df<-data.frame(v1, v2)

我想为每一栏做以下事情:

r1_v1 <- rle(is.na(df$v1)) #rle on whether values are NA
r2_v1 <- rle(!is.na(df$v1)) #rle on whether values are NOT NA
gaps_v1 <- df$v1[cumsum(r1_v1$lengths)[r1_v1$values]+1] - #upper bound of each NA group
        df$v1[c(1,cumsum(r1_v1$lengths))[r1_v1$values]] #lower bound
write.table(gaps_v1, file="gaps_v1.txt", sep=",")
x<- df$v1[cumsum(r2_v1$lengths)[r2_v1$values]]
x2 <- x[-1]
cont_v1<- x2-
        df$v1[cumsum(r1_v1$lengths)[r1_v1$values]+1]
cont_v1<-replace(cont_v1, cont_v1==0, 1)
write.table(cont_v1, file="cont_v1.txt", sep=",")

我尝试使用进行循环 - 但无法弄清楚如何遍历每一列(v1,v2等)。

如上所示,我希望每列写入文件的间隙 cont 输出。

或者,可以将它们编译成1个数据框/列表,并将相应的列名作为附加变量,如下所示:

"x", "column"
"1",16, "v1"
"2",184, "v1"
"3",625, "v1"
"4",5018, "v1"
"5", 16, "v2"
"6", 89, "v2"
...

编辑:用语言:我想运行 rle 来计算数字之间的间隙长度(即v1中的1450-1466),以及连续观察的长度(即对于数据集中的每一列(v1,v2等),在v2中为1466-1561。我已经对 rle 计算有了一些帮助,现在我要求帮助设置一个循环来分析我的整个数据集。

EDIT2:从头开始构建所有内容可能会更好,另请参阅我的其他帖子,描述最初的问题(不是循环)。 Link to previous post

0 个答案:

没有答案