我正在尝试编写一个简单的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]{
我不知道如何完成它...我知道这是非常基本的东西,但我不知道如何在代码中将其短语
答案 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
打印到控制台,但是当然它们可以存储在矢量,列表等中。