【发布时间】:2015-11-21 10:44:53
【问题描述】:
当列值从increasing 顺序更改为混合顺序时,我试图找出一种插入NA 值的简单方法。但是,如果在这种混合排序的行之后逻辑上继续增加顺序,那么也可以保留这些行。
如果所有行都没有升序,请将这些行值替换为NA。 (表示所有行混合排序)
此外,任何可以在其行内保持排序序列至少 5 个数字的列都可以通过(可以保持其行具有有序部分的行)。否则,替换 NA 值那些无法通过此逻辑的行。
我最好用 dplyr 来完成这个过程。我试图这样做,但无法想出这个主意:(。
dt_new <- dt%>%
mutate_each(funs(replace(., which(ifelse(.....
示例数据
set.seed(123)
C1 = c(1:10,7,8,11,12)
C2 = c(2:12,7,13,12)
C3 = sample(1:14)
C4 = c(1:14)
C5 = c(sample(1:9),5,6,7,8,10)
dt <- data.frame(C1,C2,C3,C4,C5)
C1 C2 C3 C4 C5
# 1 1 2 5 1 1
# 2 2 3 11 2 8
# 3 3 4 14 3 2
# 4 4 5 10 4 9
# 5 5 6 13 5 7
# 6 6 7 1 6 4
# 7 7 8 12 7 3
# 8 8 9 7 8 5
# 9 9 10 4 9 6
# 10 10 11 3 10 5
# 11 7 12 6 11 6
# 12 8 7 2 12 7
# 13 11 13 2 13 8
# 14 12 12 9 14 10
我要查找的输出
C1 C2 C3 C4 C5
# 1 1 2 NA 1 1
# 2 2 3 NA 2 NA
# 3 3 4 NA 3 2
# 4 4 5 NA 4 NA
# 5 5 6 NA 5 NA
# 6 6 7 NA 6 NA
# 7 7 8 NA 7 3
# 8 8 9 NA 8 NA
# 9 9 10 NA 9 NA
# 10 10 11 NA 10 5
# 11 NA 12 NA 11 6
# 12 NA NA NA 12 7
# 13 11 13 NA 13 8
# 14 12 NA NA 14 9
【问题讨论】:
-
为什么
dt$C5[1]变成NA?我曾期望 1 留在那里。 (嗯,这不是我唯一不明白的,我通过了) -
@Tensibai pass 意味着如果至少 5 行可以在该 C5 列显示递增的顺序序列,则可以保留它们。其他行应该是
NA -
所以你只会保留 5 个连续(增加)行的块?抱歉,您的预期输出很难与输入匹配,而且我不清楚逻辑
-
@Tensibai 如果是这样,如果逻辑顺序发生变化,您至少可以提供一个答案。
-
您应该修正与您的输入相关的预期输出。据我所知,您的问题 C5 行应该是 c(1,NA,2,NA,NA,NA,3,5,6,NA,NA,7,8,10) 或者 c(1,NA,2, NA,NA,NA,3,NA,NA,5,6,7,8,10) 或者整个 NA 我无法确定到底是哪一个
标签: r sorting if-statement dplyr