for循环确定case / control对中是否有类似的变量

时间:2017-12-04 12:12:19

标签: r

我正在尝试编写一个简单的for循环,但我不确定如何去做。 我有一组数据被分组(4个控件到1个案例[总共500个案例])。我是要查看每个组,看看他们是否也有关于另一个变量的类似信息,并且输出"是/否"如果在"组中超过两个"具有该变量的相同值。

this is an example of the dataset

我期望的输出是 TRUE,FALSE,TRUE

这是我到目前为止所拥有的

num_rows=nrow(data)
for(i in 1:num_rows){
  if(Pair.ID=data[i,1]{

我不知道如何完成它...我知道这是非常基本的东西,但我不知道如何在代码中将其短语

1 个答案:

答案 0 :(得分:1)

由于您希望按组评估属性,dplyr的{​​{1}}非常有用。

group_by

我首先使用library(dplyr) data <- data.frame(Pair.ID = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3), Group = c("G2", "F2", "F6", "H1", "G2", "J2", "T1", "J7", "B2", "F3", "F3", "Y6", "F3", "W2")) 定义组,然后使用group_by(Pair.ID)汇总数据框,并定义新列summarize,如果组中有任何信息,则Same.Info该组的列重复,否则为TRUE

FALSE

不使用data %>% group_by(Pair.ID) %>% summarize(Same.Info = any(duplicated(Group))) # # A tibble: 3 x 2 # Pair.ID Same.Info # <dbl> <lgl> # 1 1 TRUE # 2 2 FALSE # 3 3 TRUE 和for循环的方法。

dplyr

这里检查每个组的结果只是用n_group <- 3 for (i in 1:n_group){ cat(i, any(duplicated(data$Group[data$Pair.ID == i])), "\n") } # 1 TRUE # 2 FALSE # 3 TRUE 打印到控制台,但是当然它们可以存储在矢量,列表等中。