循环遍历列和行,并将值复制到R中的新列中

循环遍历列和行,并将值复制到R中的新列中,r,dataframe,conditional-statements,transpose,R,Dataframe,Conditional Statements,Transpose,我对R还是一个新手,我正在努力完成数据争论,但我有点卡住了 我将R中的数据组织为以下数据帧格式(维度[24,17]): 我试图实现的是每第8行(从第1行开始,第1、9、17行等)填充一列值,其中除999以外的值将在单个列中相互复制。如果行仅由999个值组成,则我希望列中的每个值都低于999的8倍。在这个具有24行的特定示例中,该列将填充(基于第1、9、17行)尺寸[1、24]: 2 2 2 2 2 2 2 2 999 999 999 999 999 999 999 999 1 3 4 2 2 2

我对R还是一个新手,我正在努力完成数据争论,但我有点卡住了

我将R中的数据组织为以下数据帧格式(维度[24,17]):

我试图实现的是每第8行(从第1行开始,第1、9、17行等)填充一列值,其中除999以外的值将在单个列中相互复制。如果行仅由999个值组成,则我希望列中的每个值都低于999的8倍。在这个具有24行的特定示例中,该列将填充(基于第1、9、17行)尺寸[1、24]:

2
2
2
2
2
2
2
2
999
999
999
999
999
999
999
999
1
3
4
2
2
2
2
2

这意味着我必须遍历每一列,从第1列、第1行开始,直到第1行中所有列的末尾,然后移动到第9行、第1列,直到第9行中所有列的末尾,等等。 我查看了R中使用条件将行转换为列的示例,但我无法完成这项工作


鉴于我在这里缺乏知识,有人知道在R中完成这项工作的方法吗?

我们可以首先使用
seq
提取相关行

df1 <- df[seq(1, nrow(df), 8), ]

如果需要作为一列dataframe,我们可以围绕此输出包装
data.frame

我们可以首先使用
seq
提取相关行

df1 <- df[seq(1, nrow(df), 8), ]
如果需要作为一列dataframe,我们可以围绕此输出包装
data.frame

c(apply(df1, 1, function(x) if(all(x == 999)) rep(999, 8) else x[x != 999][1:8]))
 #[1] 2 2 2 2 2 2 2 2 999 999 999 999 999 999 999 999  1 3 4 2 2 2 2 2