我正在编写一个if else语句,该语句接受一个输入(工具,以条形码编号的形式)并输出工具名称和位置。
我也在编写它,以便当输入某个条形码编号(工具)时,它将添加到列名(TIMES.USED)中的运行总计中。我遇到了问题,因为我试图添加一个检入/检出列(状态),该语句基本上读取为,如果某项使用情况的值可以被2整除,则该项被检入。如果它不能被2整除,则项目已签出。这是我的数据框的结构以及到目前为止已经编写的代码:
数据框:
match_parent
代码:
Barcode.Number, Type.Equipment, Manufacture, Times.Used, Status
4041, Flash Light, Surefire, 1
4044, Rope, Surefire, 2
我可以得到它,所以当我输入一个数字(如4041)时,它可以看到1为奇数,并将“输出”输出到“状态”列。问题是我不确定如何编写它以便将不同的状态输出到不同的行中,因为它只是输出到所有行中。谢谢!
答案 0 :(得分:0)
使用match
,我们可以找到所请求的条形码所在的行,然后进行分配
index
。然后,我们使用index
更改正确的状态值。
tool = as.integer(readline(prompt="Enter a number: "))
index<-match(tool, df$Barcode.Number)
df1 <- df %>% filter(df$Barcode.Number == tool) %>%
select(Type.Equipment, Manufacture)
if((df$TIMES.USED %% 2) == 0) {
df$Status[index] <- 'In'
} else {
df$Status[index] <- 'Out'
}
例如。
Tool<-c(10,21,31,42,51)
Data<-c("a","b","c","d","e")
Status<-c(NA,NA,NA,NA,NA)
df<-data.frame(Tool,Data,Status)
index<-match(10, df$Tool)
df$Status[index] <- 'In'
Tool Data Status
1 10 a In
2 21 b <NA>
3 31 c <NA>
4 42 d <NA>
5 51 e <NA>