在R中:手动更改数据并获取对应的R代码

问题描述 投票:0回答:1

在 R Studio(或其他地方)中,是否可以手动更改数据框中的条目,然后获取文档更改步骤的相应代码?

我知道功能

edit
,它可以很好地打开一个编辑窗口。但并没有生成相应的代码。

原因是:我有一个相当大的数据集,需要大量手动编辑。如果我可以直接在代码中记录它们,而不是在 Excel 或其他地方更改数据,那就太好了。但写下来是一项相当大的工作,我想,一定有一个功能可以自动生成此代码。

r rstudio edit
1个回答
0
投票

我非常同意罗兰的评论,但如果这是您必须做的事情,那么记录这些更改至关重要。 您可以通过将编辑后的数据与原始数据进行比较,然后生成可以从原始数据获取新数据的代码来完成此操作。 以下是

mtcars
数据的示例。 首先,确保数据中有一个观察编号,我在下面将其称为
obs
。 如果您将其称为其他名称,则需要修改代码。

data(mtcars)
mtcars$obs <- 1:nrow(mtcars)
# save data as orig before editing
orig <- mtcars

我编辑了数据并将其保存为新数据。 我记录了我在代码块中所做的更改。

new <- edit(mtcars)

# changed mpg for obs 20 to 20
# changed cyl for obs 17 to 4
# changed hp for obs 3 to 150

最后,您可以循环遍历变量名称,识别每个变量中的差异所在,并编写代码将不同的值分配给原始数据集中的适当观察。获得所有重新编码后,您可以使用

cat()
或类似内容将它们写入单独的文件。

recodes <- NULL
nms <- names(mtcars)
for(n in nms){
  inds <- which(orig[[n]] != new[[n]])
  if(length(inds) > 0){
    recodes <- c(recodes, sapply(inds, \(i)paste0("orig$", n, "[",i,"] <- ", new[[n]][i])))
  }
}
recodes
#> [1] "orig$mpg[20] <- 20" "orig$cyl[17] <- 4"  "orig$hp[3] <- 150"

创建于 2024-12-18,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.