【问题标题】:Identification of unique observations in a partial dataframe (defined by a factor)识别部分数据框中的唯一观测值(由因子定义)
【发布时间】:2015-07-27 15:10:41
【问题描述】:

在按物种(列)矩阵的样本(行)中,包含子集(由列处理分配):

data <- structure(list(S1 = c(0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L), S2 = c(0L, 
0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L), S3 = c(0L, 1L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), Treatment = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor")), .Names = c("S1", 
"S2", "S3", "Treatment"), class = "data.frame", row.names = c(NA, 
9L))

我想确定仅在给定处理中出现的那些物种。

这可能吗?非常感谢!

/编辑:

我想知道 i) 每次处理的独特物种数量,以及 ii) 想创建包含每次处理唯一的物种名称的向量。

【问题讨论】:

  • 请提供您想要的输出

标签: r


【解决方案1】:

对于每种治疗方法唯一的物种名称,我会使用(尽管它可能会被优化)

sapply(data[-4L], function(x) { 
  temp <- data[x == 1L, 4L]
  if(length(unique(temp)) == 1) as.character(unique(temp)) else ""
})

# S1  S2  S3 
# "" "B" "A"

对于每个处理的独特物种数量,这里是一个矢量化选项

rowSums(!!rowsum(data[-4L], data[, 4L]))
# A B C 
# 2 2 1 

【讨论】:

  • 谢谢!也许我发布了错误的问题,但您的回答为我提供了每次治疗发现的物种数量。例如我得到:$Ac_4126_4 [1]“八月”“十月”“十一月”,所以这个物种在三个月内被发现(~治疗)。但是,我的问题与在给定处理中发现的物种有关。
  • 第一个输出为您提供一次处理中发现的观察结果。例如,S2 仅在处理 B 中找到。 S3 仅在治疗 A 中发现。 S1 存在于两种不同的处理中,因此它的值为 NULL
  • 只是为了确保,由于我不擅长语法,如果因子变量在第 n 列中,如何修改代码?只是 lapply(data.ap[-nL], function(x) { temp
  • 是的,完全一样。 rowsum(data[-4L], data[, 4L]) 将提供与 dplyr 选项相同的输出。
  • 使用 sapply() 的版本几乎是我想要的。谢谢。
【解决方案2】:
library(dplyr)
data %>%
  group_by(Treatment) %>%
  summarise(S1 = any(S1 == 1),
            S2 = any(S2 == 1),
            S3 = any(S3 == 1))

每次处理为您提供一行,每个物种为您提供一列。 TRUE 表示在该处理中发现了该物种。

【讨论】:

  • 不确定这是否解决了问题,但如果是,您可以简化为:data %&gt;% group_by(Treatment) %&gt;% summarise_each(funs(any(. == 1)))
  • 噢...summarise_each!这对我来说是新的,我喜欢它!
  • 不知道如何回答问题
  • 我将问题解释为如何确定哪些物种接受了治疗。 S1 和 S3 在治疗 A 中的某处都列出了 1,因此它们返回 TRUE。但严格来说,如果没有更好地了解 nouse 希望的输出,我们不知道它是否回答了问题。它只回答了我对这个问题的解释。
  • 谢谢你。我应该更准确地发布问题。对于初学者,我想知道每个处理的独特物种的数量,在第二步中,每个处理独特物种的观察频率直方图会很好。现在,我可以轻松地将输出传输到 excel 并按“true”排序。
猜你喜欢
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
相关资源
最近更新 更多