将第二行排成一列NA

时间:2020-10-07 17:10:12

标签: r

我想在第2列中每隔两行给出NA,关于如何实现此建议?谢谢!

scp "${f}" $dest && echo $f successfully copied! >> log_copy_$DT.txt

............................................... ...............................................

3 个答案:

答案 0 :(得分:4)

使用R的回收(从较短的向量到较长的向量):

df$q2[c(FALSE, TRUE)] <- NA
df
#    id trt     q1    q2    q3
# 1   1   A 0.2655 0.185 0.168
# 2   1   B 0.3721    NA 0.808
# 3   1   C 0.5729 0.573 0.385
# 4   2   A 0.9082    NA 0.328
# 5   2   B 0.2017 0.944 0.602
# 6   2   C 0.8984    NA 0.604
# 7   3   A 0.9447 0.129 0.125
# 8   3   B 0.6608    NA 0.295
# 9   3   C 0.6291 0.468 0.578
# 10  4   A 0.0618    NA 0.631
# 11  4   B 0.2060 0.553 0.512
# 12  4   C 0.1766    NA 0.505
# 13  5   A 0.6870 0.761 0.534
# 14  5   B 0.3841    NA 0.557
# 15  5   C 0.7698 0.405 0.868

答案 1 :(得分:3)

尝试使用tidyverse函数和一个条件来根据行号评估模量值。这里的代码:

library(tidyverse)
#Code
rm(list=ls())
id <- rep(1:5, each=3)
trt <- rep(LETTERS[1:3],5)
set.seed(1)
q1 <- runif(15)
set.seed(2)
q2 <- runif(15)
set.seed(3)
q3 <- runif(15)
df <- data.frame(id,trt,q1,q2,q3)
#Code
df <- df %>% mutate(q2=ifelse(row_number()%%2==0,NA,q2))

输出:

   id trt         q1        q2        q3
1   1   A 0.26550866 0.1848823 0.1680415
2   1   B 0.37212390        NA 0.8075164
3   1   C 0.57285336 0.5733263 0.3849424
4   2   A 0.90820779        NA 0.3277343
5   2   B 0.20168193 0.9438393 0.6021007
6   2   C 0.89838968        NA 0.6043941
7   3   A 0.94467527 0.1291590 0.1246334
8   3   B 0.66079779        NA 0.2946009
9   3   C 0.62911404 0.4680185 0.5776099
10  4   A 0.06178627        NA 0.6309793
11  4   B 0.20597457 0.5526741 0.5120159
12  4   C 0.17655675        NA 0.5050239
13  5   A 0.68702285 0.7605133 0.5340354
14  5   B 0.38410372        NA 0.5572494
15  5   C 0.76984142 0.4052822 0.8679195

或者用序列索引:

#Code 2
index <- seq(2,nrow(df),by=2)
#Replace
df$q2[index] <- NA

输出:

   id trt         q1        q2        q3
1   1   A 0.26550866 0.1848823 0.1680415
2   1   B 0.37212390        NA 0.8075164
3   1   C 0.57285336 0.5733263 0.3849424
4   2   A 0.90820779        NA 0.3277343
5   2   B 0.20168193 0.9438393 0.6021007
6   2   C 0.89838968        NA 0.6043941
7   3   A 0.94467527 0.1291590 0.1246334
8   3   B 0.66079779        NA 0.2946009
9   3   C 0.62911404 0.4680185 0.5776099
10  4   A 0.06178627        NA 0.6309793
11  4   B 0.20597457 0.5526741 0.5120159
12  4   C 0.17655675        NA 0.5050239
13  5   A 0.68702285 0.7605133 0.5340354
14  5   B 0.38410372        NA 0.5572494
15  5   C 0.76984142 0.4052822 0.8679195

答案 2 :(得分:2)

这行吗?

> df$q2[seq(2,nrow(df), 2)] <- NA
> df
   id trt         q1        q2        q3
1   1   A 0.26550866 0.1848823 0.1680415
2   1   B 0.37212390        NA 0.8075164
3   1   C 0.57285336 0.5733263 0.3849424
4   2   A 0.90820779        NA 0.3277343
5   2   B 0.20168193 0.9438393 0.6021007
6   2   C 0.89838968        NA 0.6043941
7   3   A 0.94467527 0.1291590 0.1246334
8   3   B 0.66079779        NA 0.2946009
9   3   C 0.62911404 0.4680185 0.5776099
10  4   A 0.06178627        NA 0.6309793
11  4   B 0.20597457 0.5526741 0.5120159
12  4   C 0.17655675        NA 0.5050239
13  5   A 0.68702285 0.7605133 0.5340354
14  5   B 0.38410372        NA 0.5572494
15  5   C 0.76984142 0.4052822 0.8679195
相关问题