我正在尝试在data.frame中创建一个新列,该列是通过选择从第一行开始的列的第9行(即第1行、第9行、第17行)创建的。一旦它到达列的第n行,我需要它从第2行开始重复这个过程(选择第2行,第10行,第18行)。我有一个固定的行数为96,所以我需要重复它,直到它从第9行开始,然后退出。
下面是我想做的一个例子:
df <- data.frame(Row=1:96)
> df$nineth <- c(1,9,17,25,33,41,49,57,65,73,81,89,2,10,18,26,34,42,50,58,66,74,82,90)
> print(df)
Row nineth
1 1 1
2 2 9
3 3 17
4 4 25
5 5 33
6 6 41
7 7 49
8 8 57
9 9 65
10 10 73
11 11 81
12 12 89
13 13 2
14 14 10
15 15 18
16 16 26
17 17 34
18 18 42
19 19 50
20 20 58
21 21 66
22 22 74
23 23 82
24 24 90有没有办法使用for循环来做到这一点?我对他们比apply家族更熟悉。
发布于 2019-10-18 03:52:26
您可以使用R的矩阵/向量对偶来轻松地完成此操作。
df <- data.frame(Row=1:96)
df$nineth <- as.vector(matrix(df$Row, byrow = TRUE, ncol = 8))
head(df,15)
Row nineth
1 1 1
2 2 9
3 3 17
4 4 25
5 5 33
6 6 41
7 7 49
8 8 57
9 9 65
10 10 73
11 11 81
12 12 89
13 13 2
14 14 10
15 15 18发布于 2019-10-18 03:44:38
以下工作:
n <- 9
df$nineth <- unlist(lapply(1:(n-1),
function(x){
df$Row[seq(x, nrow(df),by=n-1)]}))https://stackoverflow.com/questions/58439589
复制相似问题