gpt4 book ai didi

r - 仅选择出现在其他因素的每个水平中的那些水平的因素

转载 作者:行者123 更新时间:2023-12-02 07:21:05 25 4
gpt4 key购买 nike

我想只选择那些出现在 Loc 级别中的 Trt 级别(通常出现在 Loc 级别中的每个大数据集)。

Loc <- rep(paste0("L", 1:2), c(6, 4))
Trt <- c(rep(paste0("T", 1:3), times = 2), rep(paste0("T", 1:2), times = 2))
set.seed(12345)
Y <- c(rnorm(n=5, mean = 50, sd = 5), NA, rnorm(n=4, mean = 50, sd = 5))
df1 <- data.frame(Loc, Trt, Y)
df1

Loc Trt Y
1 L1 T1 52.92764
2 L1 T2 53.54733
3 L1 T3 49.45348
4 L1 T1 47.73251
5 L1 T2 53.02944
6 L1 T3 NA
7 L2 T1 40.91022
8 L2 T2 53.15049
9 L2 T1 48.61908
10 L2 T2 48.57920

要求的输出

   Loc Trt        Y
L1 T1 52.92764
L1 T2 53.54733
L1 T1 47.73251
L1 T2 53.02944
L2 T1 40.91022
L2 T2 53.15049
L2 T1 48.61908
L2 T2 48.57920

这可以通过使用

来实现
    library(dplyr)
df1 %>% filter(Trt != "T3")

这里我知道外观的模式。我正在寻找更通用的解决方案。

最佳答案

这是另一个基于 R 的想法。我们根据 Loc 拆分 Trt 并使用 Reduceintersect找到所有共同的元素。我们使用这些元素来索引原始数据框,即

i1 <- Reduce(intersect, split(df1$Trt, df1$Loc))
df1[df1$Trt %in% i1,]

这给出了,

  Loc Trt        Y
1 L1 T1 52.92764
2 L1 T2 53.54733
4 L1 T1 47.73251
5 L1 T2 53.02944
7 L2 T1 40.91022
8 L2 T2 53.15049
9 L2 T1 48.61908
10 L2 T2 48.57920

关于r - 仅选择出现在其他因素的每个水平中的那些水平的因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46251221/

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