通过提示用户输入R来更新列

时间:2017-06-17 00:03:00

标签: r loops match prompt

我有一个数据框,我需要手动筛选每一行,并确定我使用RecordLinkage包匹配的列是否确实匹配。当一些记录不仅仅是由于虚假关联时,它们很有可能成为匹配。我想快速识别这些,而不是将我的数据导出到csv并逐个滚动它们。我想要的是迭代数据的每一行,并为每一行提示用户(我)提问“这是一个匹配(是/否)?”,其中答案('是'或'no')输入该行的列。

此代码将重现数据的快速示例

else if($page=='edit'){
      $id = $_POST['id'];
     $name = $_POST['nm'];
     $email = $_POST['em'];
     $phone = $_POST['ph'];
     $address = $_POST['ad'];

     $stmt = $db->prepare(" update crud set name=? , email=? , phone=? , address=? where id=?");  
     $stmt->bindValue(1,$name);
     $stmt->bindValue(2,$email);
     $stmt->bindValue(3,$phone);
     $stmt->bindValue(4,$address);
     $stmt->bindValue(5,$id);
     if($stmt->execute()){
        echo "succesfully updated";
     }
     else{
        echo "failed updated data";
     }
}

提供此结果,

id= c(1, 2, 3, 4)
loc1 = c("21ST AVE", "5TH ST", "HICKMAN ST", "GULF DR")
loc2 = c("21ST AVE BEACH ST", "5 EAST HARPER BLVD", "28 HARLEY ST", "1000 GULF DR")
day1 = c(12, 13, 14, 15)
day2 = c(12, 13, 14, 15)
time1 = c("20:52", "12:52", "15:35", "14:45")
time2 = c("20:52", "18:29", "03:55", "15:01")
df = data.frame(id, loc1, loc2, day1, day2, time1, time2)

我想要的是提示询问

id  loc1        loc2                day1    day2    time1   time2
1   21ST AVE    21ST AVE BEACH ST   12      12      20:52   20:52
2   5TH ST      5 EAST HERST BLVD   13      13      12:52   18:29
3   HICKMAN ST  28 HARLEY ST        14      14      15:35   03:51
4   GULF DR     1000 GULF DR        15      15      14:45   15:01

在每行回答是或否,将得到以下结果,

Is this a match (y/n)?
----------------------
id  loc1        loc2                day1    day2    time1   time2
1   21ST AVE    21ST AVE BEACH ST   12      12      20:52   20:52

我甚至不确定这是否可能,b)可行,或c)最好的方法。开放思想/建议。感谢。

1 个答案:

答案 0 :(得分:1)

首先制作一个功能......

checkRow<-function(df){
  match<-vector()
  for(i in 1:nrow(df)){
    print(df[i,])
    ans<-readline("Is this a match? (y or n)")
    match<-c(match, ans)
  }
  return(cbind(df, match))
}

然后这样称呼它:

checked<-checkRow(df)