我希望你能概括出我回答的最后一个问题 https://stackoverflow.com/a/51271580/903061——这确实很相似。让我们来解决一下:
# load sample data
dd = read.table(text = "Barcode_Number, Date_Used
5698, 2018-07-07
4570, 2018-07-11", header = TRUE, sep = ",")
# make sure the date columns is Date class
dd$Date_Used = as.Date(dd$Date_Used)
# get barcode to update
barcode_update <- as.integer(readline(prompt="Enter a Barcode: "))
# make the update
dd[dd$Barcode_Number == barcode_update, "Date_Used"] = Sys.Date()
现在让我们与您的上一个问题进行比较,您想要更新名为的列"Times.Used"
。我们假设我们使用相同的变量名,barcode_update
保存用户输入:
dd[dd$Barcode_Number == barcode_update, "Date_Used"] = Sys.Date()
dd[dd$Barcode_Number == barcode_update, "Times.Used"] = df[df$Barcode_Number == tool, "Times.Used"] + 0.5
作业的左侧是相同的,形式如下:
dd[dd$Barcode_Number == barcode_update, "Name of column to update"] = ...<new values>...
数据框使用括号引用data_name[rows, columns]
。在这两种情况下,我们都希望更新某些行:条形码编号与用户输入匹配的行。所以我们做这个测试:dd[dd$Barcode_Number == barcode_update, ]
。您可以更新第三行dd[3, ]
,第 1、2、5 行dd[c(1, 2, 5), ]
,或者使用一些非常复杂的条件,也许所有有 0 的条形码dd[grepl("0", dd$Barcode_Number), ]
.
In the column的论证[
,我们只需要要更新的列名称(用引号引起来)。又好又简单。您甚至可以在那里使用一个变量,其中存储了列名。
右侧获得新值。这个问题很简单 - 您希望新值是返回的日期Sys.Date
,所以我们这样做= Sys.Date()
(or <- Sys.Date()
,无论您喜欢哪个)。在上一个问题中,您想将 0.5 添加到现有的“Times_Used”列,因此我们在右侧放置与左侧完全相同的内容,但使用+ 0.5
附加上。