比较两列数据集中的值

时间:2017-11-08 02:34:18

标签: r

我是R的新手并且不断尝试将其想象为JS,但它绝对不像它。我需要获取第1列中的每个值,并将其与第2列中的计数器部分进行比较。

例如:如果第1列中的第五项是“Subaru”,我需要查看第2列中的第五项是什么。如果在第2列中邮政编码是24153,那么做一件事,如果它是24060做其他事情。

使用JS我只需运行for循环并执行类似

的操作
for(i; i < name.length; i++){
    if(name[i] == "Subaru" && zipcode[i] == 24153){
        do this
    } else if (blah blah){
        blah blah blah
    }
}

但你不能用i来获取R中每列的索引,因为在R for循环中我是值...对吗?

我尝试嵌套for循环,但我在数据库中有7,000多个项目,并且循环通过所有这两个项目是杀手,即使有中断,因为内部循环总是从1开始。

我还尝试将它们放在一个列表中,但由于某些原因,它不起作用。以下是我到目前为止尝试过的两种方法。

names = data$model
zips = data$zipcode
mylist <- list()
mylist[[1]] <- names
mylist[[2]] <- zips

r = 0
while (r <= length(mylist[[1]])) {
  print(mylist[[1]][r])
  print(mylist[[2]][r])
  if(!is.na(mylist[[1]][r])){
    if(mylist[[1]][r] == "Subaru" & mylist[[2]][r] == "24153"){
      print(mylist[[1]][r])
    }
  }
}

嵌套for循环

  names = data$model
  zips = data$zipcode
  for (j in names) {
  if(!is.na(j)){
    for (k in zips) {
      if(!is.na(k)){
        if(j == "Subaru" & k == "24153"){
          print(j)
          break
        } else if(j == "Subaru" & k == "24060"){
          print(j)
          break
        } else if(j == "Subaru" & k == "24019"){
          print(j)
          break
        }
      }
    }
  }
}

欢迎任何提示或想法。我觉得我看错的方式。

1 个答案:

答案 0 :(得分:1)

是的,你的for循环更多是一种java格式。尝试这样的事情:

for(i in 1:nrow(data){
    if(name[i] == "Subaru" & zipcode[i] == 24153){
        foo
    }else if{
        bar
}}