我目前正在处理一个需要在许多列中进行一些更改的数据框。 我的代码与此类似:
Table_A$Field_A <- "10"
Table_A$Field_B <- "20"
Table_A$Field_C <- "30"
Table_A$Field_D <- "20"
Table_A$Field_E <- "20"
可以看出它是重复的。我认为应该有一个函数或包,可以避免每次在同一数据帧中的不同列上输入Table_A$Field_X
。
我尝试搜索,但无法提供正确的关键字来获取解决方案。所有的答案表示赞赏。谢谢。
答案 0 :(得分:1)
使用外部软件包之前,请先查看base::within
函数。该函数允许您将数据帧指定为data
参数,并使用带有表达式的expr
参数对变量进行修改。
TableA <-
as.data.frame(sapply(
X = paste("Field", LETTERS[1:5], sep = "_"),
FUN = function(x) {
3
}, simplify = FALSE
))
within(data = TableA,
expr = {
Field_A = 1e3
Field_B = -10
}) -> TableA
请注意,transform
的语法是不同的。要使用transform
实现所提供的解决方案,您可以执行以下操作:
transform(TableA,
Field_A = 1e3,
Field_B = -10) -> Table_res_transform
这等效于:
within(data = TableA,
expr = {
Field_A = 1e3
Field_B = -10
}) -> Table_res_within
identical(Table_res_transform, Table_res_within)
# [1] TRUE
dplyr
require(dplyr)
TableA %>%
mutate(Field_A = 1e3,
Field_B = -10)