嘿,我正在尝试通过使用新版本的 dplyr 添加“Last_”来重命名某些列,但我一直收到此错误
Error: `across()` must only be used inside dplyr verbs.
Run Code Online (Sandbox Code Playgroud)
这是我的代码
data %>% rename(across(everything(), ~paste0("Last_", .)))
Run Code Online (Sandbox Code Playgroud)
dplyr 版本:v1.0.2
我正在努力寻找一个简单快速的解决方案,通过将它们之间的所有“组”列相乘来创建一个新的数据框。
数据为例
a1 <- rnorm(n = 10)
b1 <- rnorm(n = 10)
c1 <- rnorm(n = 10)
a2 <- rnorm(n = 10)
b2 <- rnorm(n = 10)
c2 <- rnorm(n = 10)
Run Code Online (Sandbox Code Playgroud)
例如在我的初始数据表中
Original <- data.frame(
date = seq(today()-9, today(), by = 1),
a1 = a1,
b1 = b1,
c1 = c1,
a2 = a2,
b2 = b2,
c2 = c2)
Run Code Online (Sandbox Code Playgroud)
这个数据表是我想要实现的(即,以 1 结尾的列之间的所有可能组合的列和以 2 结尾的列之间的所有可能组合的列)
Objective <- data.frame(
date = seq(today()-9, today(), by = 1),
b1a1 = b1*a1,
c1a1 …Run Code Online (Sandbox Code Playgroud) 我认为如果我显示问题是什么会更容易,所以我有这个数字数据
MoSold YrSold SalePrice OverallQual OverallCond
1 2 3 208500 7 5
2 5 2 181500 6 8
3 9 3 223500 7 5
4 2 1 140000 7 5
5 12 3 250000 8 5
6 10 4 143000 5 5
Run Code Online (Sandbox Code Playgroud)
感谢 mutate_at 和嵌套的 ifelse,如果条件为真(列平均值高于 0.8),我想更改每一行,但是当我尝试使用此代码执行此操作时
data %>%
mutate_at(vars(MoSold, YrSold, SalePrice, OverallQual, OverallCond),
~(ifelse((mean(., na.rm = T)) > 4, log(.), .))) %>% head()
Run Code Online (Sandbox Code Playgroud)
我得到以下数据,所有列都具有相同的值
MoSold YrSold SalePrice OverallQual OverallCond
1 0.6931472 3 12.24769 1.94591 1.609438
2 0.6931472 3 12.24769 …Run Code Online (Sandbox Code Playgroud) 我有两个数据框
A B E H
x1 x2 x3 x6
x1 x2 x4 x7
x1 x2 x5 x8
Run Code Online (Sandbox Code Playgroud)
和
A B
y1 y2
y1 y2
Run Code Online (Sandbox Code Playgroud)
这就是我想用 dplyr 或 reshape2 实现的
A B E H A B
x1 x2 x3 x6 y1 y2
x1 x2 x4 x7 y1 y2
x1 x2 x5 x8
Run Code Online (Sandbox Code Playgroud)
谢谢
有没有办法改变除一个(在这种情况下为年龄)或两个之外的所有数字变量?
数据
data = data.frame(
Year = c(1,2,5,7,2,6,2,6),
days = c(5,3,6,3,7,2,5,7),
age = c(1,3,5,23,2,4,5,2),
names = c("A063", "A013", "A063", "A083", "A019", "A012", "A013", "A113"))
Run Code Online (Sandbox Code Playgroud)
像这样:我想缩放除年龄之外的所有数字术语
data = mutate(across(where(is.numeric & !age), scale))
Run Code Online (Sandbox Code Playgroud)