对于我们学习如何使用 R 的大学课程,我们必须过滤提供的数据框(称为犯罪)。原始数据框有 8 列。
我不认为我可以提供数据集,因为它是学校作业的一部分。但任何建议都会非常感谢。
任务的要求是使用循环和 if 语句,过滤一列(“类别”)并仅获取具有一个特定级别(14 个)(名为“药物”)的行。然后只将这些行的八列中的三列打印到新的数据框中。
for (i in crimes$category) {
if (i == "drugs") {
drugs <- rbind(drugs, crimes[c(2,3,7)])
}
}
现在我知道问题出在 rbind 函数中,因为它现在只是将所有行复制 160 次(有 160 行属于“药物”类别。但我不知道如何获得具有 160 个观察值的数据框,并且只有3 个变量。
我不认为我可以提供数据集,因为它是学校作业的一部分。但任何建议都会非常感谢。
答案 0 :(得分:0)
请注意,赋值违背了使用 R 的目的。不过,使用 for
/ if
构造来获取包含类别值“药物”的行号,然后在外部创建结果 df循环:
keep <- integer()
for (i in crimes$category) {
if (i == "drugs") {
keep <- c(keep, i)
}
}
crimes2 <- crimes[keep, c(2,3,7)]
注意基本的 R 无循环解决方案是:
crimes2 <- crimes[crimes$category == "drugs", c(2,3,7)]