gpt4 book ai didi

r - 在 R 中构建逻辑的计算

转载 作者:行者123 更新时间:2023-12-02 16:34:31 25 4
gpt4 key购买 nike

我试图涵盖 Excel 中的逻辑,但是失败了,因为我不是 Excel 专家。

以下是我的数据:

  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15
1 12 3 3 4 5 6 7 7 7 7 7 7 7 7 7
2 1 4 5 5 5 5 5 5 6 7 8 8 8 8 8
3 3 4 4 4 4 45 32 57 23 23 23 23 23 23 23

正如您所看到的,在第一行中,从最后一列开始有多个 7。类似地,对于从最后一列开始的第二行有多个 8,对于 row3,有多个 23。

我想将多列 7、8 和 23 替换为 #N/A,并仅保留结果中的前 7 个。我用一个简单的逻辑尝试了它,其中 IF(C15<>C14, C15,"N/A"),但是这个逻辑失败了,因为它也在行级别转换了以前的重复值

下面是我寻找最终结果的方式。

  C1 C2 C3 C4 C5 C6 C7   C8   C9  C10  C11  C12  C13  C14  C15
1 12 3 3 4 5 6 7 #N/A #N/A #N/A #N/A #N/A #N/A #N/A #N/A
2 1 4 5 5 5 5 5 5 6 7 8 #N/A #N/A #N/A #N/A
3 3 4 4 4 4 45 32 57 23 #N/A #N/A #N/A #N/A #N/A #N/A

我可以在 Excel 中完成吗,还是需要在 R 中找到一些代码?

如有任何线索,我们将不胜感激。

谢谢,周杰伦

数据:

df <- structure(list(C1 = c(12, 1, 3), C2 = c(3, 4, 4), C3 = c(3, 5, 4), 
C4 = c(4, 5, 4), C5 = c(5, 5, 4), C6 = c(6, 5, 45),
C7 = c(7, 5, 32), C8 = c(7, 5, 57), C9 = c(7, 6, 23),
C10 = c(7, 7, 23), C11 = c(7, 8, 23), C12 = c(7, 8, 23),
C13 = c(7, 8, 23), C14 = c(7, 8, 23), C15 = c(7, 8, 23)),
.Names = c("C1", "C2", "C3", "C4", "C5",
"C6", "C7", "C8", "C9", "C10",
"C11", "C12", "C13", "C14", "C15"),
row.names = c(NA, -3L), class = "data.frame")

最佳答案

这是使用 data.table 中的 rleid 的 R 解决方案:

library(data.table)
df[t(apply(df, 1, function(x) shift(rleid(x) == max(rleid(x)))))] <- NA

结果:

  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15
1 12 3 3 4 5 6 7 NA NA NA NA NA NA NA NA
2 1 4 5 5 5 5 5 5 6 7 8 NA NA NA NA
3 3 4 4 4 4 45 32 57 23 NA NA NA NA NA NA

请注意,即使重复整数出现在每行中的任何位置且未连接到末尾的重复序列,该方法也有效。

数据:

df = structure(list(C1 = c(12L, 1L, 3L), C2 = c(3L, 4L, 4L), C3 = c(3L, 
5L, 4L), C4 = c(4L, 5L, 4L), C5 = c(5L, 5L, 4L), C6 = c(6L, 5L,
45L), C7 = c(7L, 5L, 32L), C8 = c(7L, 5L, 57L), C9 = c(7L, 6L,
23L), C10 = c(7L, 7L, 23L), C11 = c(7L, 8L, 23L), C12 = c(7L,
8L, 23L), C13 = c(7L, 8L, 23L), C14 = c(7L, 8L, 23L), C15 = c(7L,
8L, 23L)), .Names = c("C1", "C2", "C3", "C4", "C5", "C6", "C7",
"C8", "C9", "C10", "C11", "C12", "C13", "C14", "C15"), class = "data.frame", row.names = c(NA,
-3L))

关于r - 在 R 中构建逻辑的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50914129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com