标签: rowwise

R mutate & gsub 其中模式基于列

我正在尝试删除pattern使用and 。var_1mutate()gsub()

由于gsub()只需要一个字符串,我必须rowwise()mutate(). 否则,它将仅使用该pattern列中的第一条记录。

我想知道是否有任何其他方法可以在不使用的情况下达到相同的结果rowwise(),因为它会大大减慢过程。

test <- data.frame(
  var_1 = c('1AB', '2AB', '3C')
  ,pattern = c('AB','A','C')
)

test %>%
  dplyr::rowwise() %>%
  dplyr::mutate( result = sub(pattern, '', var_1)
          )
Run Code Online (Sandbox Code Playgroud)

期望的结果:

# A tibble: 3 x 4
# Rowwise: 
  var_1 var_2 pattern result
  <chr> <lgl> <chr>   <chr> 
1 1AB   FALSE AB      1     
2 2AB   TRUE  A       2B    
3 3C    FALSE C       3 
Run Code Online (Sandbox Code Playgroud)

r gsub dplyr rowwise

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

在 R 中值 &gt;0 的两列之间插入按行值 0

我尝试在 R 中的 a 的 2018 到 2021 行中按行不等于 0 的两个值之间插入 0 值。data.table示例数据如下所示df1

   ID string1 2018 2019 2020 2021 string2
1: a1      x2    3    3    0    4      si
2: a2      g3    5    5    4    0      q2
3: a3      n2   11    0    0    3      oq
4: a4      m3    3    0    9    8      mx
5: a5      2w    9    1    6    5      ix
6: a6     ps2    2    4    7    4      p2
7: a7     kg2    6    0    9    6      2q …
Run Code Online (Sandbox Code Playgroud)

interpolation r data.table rowwise

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

为多组列动态创建行均值的替代(更快)方法

我正在尝试自动计算多组列的每行平均得分。例如,一组列可以代表不同尺度的项目。这些列也被系统地命名(scale_itemnumber)。

例如,下面的虚拟数据框包含三个不同比例的项目。(可能会出现未包含每个量表的所有项目的情况,此处表示为缺失的 VAR_3)。

#library(tidyverse)
set.seed(123)
df <- tibble(  G_1 =  sample(1:5, size = 10000, replace = TRUE),
               G_2 =  sample(1:5, size = 10000, replace = TRUE),
               G_3 =  sample(1:5, size = 10000, replace = TRUE),
             MOT_1 =  sample(1:5, size = 10000, replace = TRUE),
             MOT_2 =  sample(1:5, size = 10000, replace = TRUE),
             MOT_3 =  sample(1:5, size = 10000, replace = TRUE),
             VAR_1 =  sample(1:5, size = 10000, replace = TRUE),
             VAR_2 =  sample(1:5, size = 10000, replace = TRUE), …
Run Code Online (Sandbox Code Playgroud)

r dplyr purrr rowwise across

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

R dplyr: rowwise + mutate (+glue) - 如何获取/引用行内容?

输入数据的简单示例:

dataset <- data.frame("part1" = c("a", "b", "c"),
                       "part2" = c("x", "y", "z"),
                       "caption" = c("{part1} {part2}",
                                     "{part2} {part1}",
                                     "{part2} {part1} {part2}"),
                       stringsAsFactors = F)
Run Code Online (Sandbox Code Playgroud)

预期成绩:

# A tibble: 3 x 3
  part1 part2 caption
  <chr> <chr> <chr>  
1 a     x     a x    
2 b     y     y b    
3 c     z     z c z  
Run Code Online (Sandbox Code Playgroud)

下面的代码不起作用,因为.指的是整个dataset,而不是整行内容的数据:

dataset %>%
  rowwise() %>%
  mutate("caption" =
           glue::glue_data(., caption)
         )
Run Code Online (Sandbox Code Playgroud)

问题:如何将行(所有)内容传递给glue

有效的代码(明确声明的行“内容”)不是我一直在寻找的,因为caption在我的数据集中“模式”中使用了更多的列,因此我想避免手动声明它,只需通过整行内容。

dataset %>%
  rowwise() %>%
  mutate("caption" = …
Run Code Online (Sandbox Code Playgroud)

r dplyr mutate rowwise r-glue

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

在 dplyr 中对选定的列求和(使用 select() 方法)

通过列出列名来对列求和非常简单:

iris %>% rowwise() %>% mutate(sum = sum(Sepal.Length, Sepal.Width, Petal.Length))

但是,假设有很多列,并且您有兴趣提取包含“Sepal”的所有列,而无需手动列出它们。具体来说,我正在寻找一种与 dplyr 中的 select() 相同的方法,它允许您使用 contains()、starts_with() 等对列进行子集化。

有一些方法可以使用 mutate_all() + sum() + join() 来实现与此查询相同的结果,但我更感兴趣的是看到与以下代码类似的解决方案:

iris %>% rowwise() %>% mutate(sum = sum(contains(colnames(.), "Sepal")))

r contains dplyr rowwise

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

散列每一行

我正在使用新生成的 dplyr 1.0.0 和摘要包来生成小标题中每一行的散列。

我知道

在 R 中使用 dplyr 和摘要向每一行添加哈希

但我想使用rowwise()dplyr 1.0.0 中的改进。

请参阅下面的示例。任何人都知道它为什么会失败?我应该被允许消化一行,其中条目是不同类型的。

library(dplyr)
library(digest)

df <- tibble(
    student_id = letters[1:4],
    student_id2 = letters[9:12],
    test1 = 10:13, 
    test2 = 20:23, 
    test3 = 30:33, 
    test4 = 40:43
)

df
#> # A tibble: 4 x 6
#>   student_id student_id2 test1 test2 test3 test4
#>   <chr>      <chr>       <int> <int> <int> <int>
#> 1 a          i              10    20    30    40
#> 2 b          j              11    21    31    41
#> 3 …
Run Code Online (Sandbox Code Playgroud)

r dplyr rowwise tibble

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

which.max() 提取最后一个最大值

在我的代码中,我想提取一系列列中的最后一个最大值,在数据帧上按行迭代。问题是我的脚本只给出了具有最大值的第一个匹配项(在本例中为第一列的名称)。关于如何更新此行以获得最后的最大值有什么建议吗?

我的数据框如下所示:

A.trust B.trust C.trust D.trust E.trust F.trust G.trust H.trust I.trust J.trust K.trust L.trust M.trust
-999    -999    -999    -999    -999    -999    -999.0  -999.0  -999.0   -999   -999    -999    -999
-999    -999    -999    -999    -999    -999     0.5    -999.0   0.5     -999   -999    -999    -999
-999    -999    -999    -999    -999    -999    -999.0  -999.0   1.0     -999   -999    -999    -999
-999    -999    -999    -999    -999    -999    -999.0  -999.0  -999.0   -999   -999    -999    -999
-999    -999    -999    -999    -999    -999    -999.0  -999.0  -999.0   -999   -999    -999    -999 …
Run Code Online (Sandbox Code Playgroud)

r max rowwise

0
推荐指数
1
解决办法
1101
查看次数

标签 统计

r ×7

rowwise ×7

dplyr ×5

across ×1

contains ×1

data.table ×1

gsub ×1

interpolation ×1

max ×1

mutate ×1

purrr ×1

r-glue ×1

tibble ×1