小编Ian*_*.T 的帖子

使用 dplyr rename(across(

嘿,我正在尝试通过使用新版本的 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

r rename dplyr tidyverse across

13
推荐指数
2
解决办法
3337
查看次数

通过从另一个表中划分所有可能的列组合来创建新的数据框

我正在努力寻找一个简单快速的解决方案,通过将它们之间的所有“组”列相乘来创建一个新的数据框。

数据为例

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)

r dplyr tidyr tidyverse data-wrangling

5
推荐指数
1
解决办法
114
查看次数

向量化的 Mutate_at 和 ifelse 问题

我认为如果我显示问题是什么会更容易,所以我有这个数字数据

  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)

if-statement r dplyr tidyverse

3
推荐指数
1
解决办法
2972
查看次数

并排粘贴 2 个数据框,无需任何键

我有两个数据框

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)

谢谢

merge r melt reshape2 dplyr

2
推荐指数
1
解决办法
97
查看次数

dplyr::mutate 除一个之外的所有数字变量?

有没有办法改变除一个(在这种情况下为年龄)或两个之外的所有数字变量?

数据

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)

r dplyr mutate across

2
推荐指数
1
解决办法
491
查看次数

标签 统计

dplyr ×5

r ×5

tidyverse ×3

across ×2

data-wrangling ×1

if-statement ×1

melt ×1

merge ×1

mutate ×1

rename ×1

reshape2 ×1

tidyr ×1