通过提示用户输入 R 来更新列
Update column by prompting user input R
我有一个数据框,我需要在其中手动筛选每一行并确定我使用 RecordLinkage 包匹配的列是否确实匹配。一些记录很可能是匹配的,而不仅仅是由于虚假关联。我想快速识别这些,而无需将我的数据导出到 csv 并逐个滚动浏览它们。我想要的是遍历每一行数据,并为每一行提示用户(我)一个问题 "is this a match (y/n)?",其中答案('yes' 或 'no' ) 将输入输入到该行的列中。
此代码将重现数据的快速示例,
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
在每一行上回答是或否将给出以下结果,
id loc1 loc2 day1 day2 time1 time2 match
1 21ST AVE 21ST AVE BEACH ST 12 12 20:52 20:52 y
2 5TH ST 5 EAST HERST BLVD 13 13 12:52 18:29 n
3 HICKMAN ST 28 HARLEY ST 14 14 15:35 03:55 n
4 GULF DR 1000 GULF DR 15 15 14:45 15:01 y
我什至不确定这是否是 a) 可能,b) 可行,或 c) 最好的解决方法。打开 thoughts/suggestions。谢谢
先做一个函数...
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)
我有一个数据框,我需要在其中手动筛选每一行并确定我使用 RecordLinkage 包匹配的列是否确实匹配。一些记录很可能是匹配的,而不仅仅是由于虚假关联。我想快速识别这些,而无需将我的数据导出到 csv 并逐个滚动浏览它们。我想要的是遍历每一行数据,并为每一行提示用户(我)一个问题 "is this a match (y/n)?",其中答案('yes' 或 'no' ) 将输入输入到该行的列中。
此代码将重现数据的快速示例,
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
在每一行上回答是或否将给出以下结果,
id loc1 loc2 day1 day2 time1 time2 match
1 21ST AVE 21ST AVE BEACH ST 12 12 20:52 20:52 y
2 5TH ST 5 EAST HERST BLVD 13 13 12:52 18:29 n
3 HICKMAN ST 28 HARLEY ST 14 14 15:35 03:55 n
4 GULF DR 1000 GULF DR 15 15 14:45 15:01 y
我什至不确定这是否是 a) 可能,b) 可行,或 c) 最好的解决方法。打开 thoughts/suggestions。谢谢
先做一个函数...
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)