小编Reb*_*ham的帖子

使用group by计算R中列中子串的出现次数

我想计算列中每个组的字符串出现次数.在这种情况下,字符串通常是字符列中的子字符串.

我有一些数据,例如

ID   String              village
1    fd_sec, ht_rm,      A
2    NA, ht_rm           A
3    fd_sec,             B
4    san, ht_rm,         C
Run Code Online (Sandbox Code Playgroud)

我开始的代码显然是不正确的,但我没有在我的搜索中发现我可以使用列中的grep函数和按村一组

impacts <- se %>%  group_by(village) %>%
summarise(c_NA = round(sum(sub$en41_1 ==  "NA")),
          c_ht_rm = round(sum(sub$en41_1 ==  "ht_rm")),
          c_san = round(sum(sub$en41_1 ==  "san")),
          c_fd_sec = round(sum(sub$en41_1 ==  "fd_sec")))
Run Code Online (Sandbox Code Playgroud)

理想情况下,我的输出将是:

village  fd_sec  NA  ht_rm  san
A        1       1   2 
B        1
C                    1      1
Run Code Online (Sandbox Code Playgroud)

先感谢您

grep r summarize

3
推荐指数
2
解决办法
338
查看次数

R:从列中的每个字符值中提取最高数值

我在数据框中有一个包含数字的字符字段,例如(0.5,3.5,7.8,2.4).

对于每个记录,我试图从字符串中提取最大值并将其放入新列中.

例如

x  csi
1  0.5, 6.7, 2.3   
2  9.5, 2.6, 1.1
3  0.7, 2.3, 5.1
4  4.1, 2.7, 4.7
Run Code Online (Sandbox Code Playgroud)

期望的输出是:

x  csi            csi_max
1  0.5, 6.7, 2.3  6.7
2  9.5, 2.6, 1.1  9.5
3  0.7, 2.3, 5.1  5.1
4  4.1, 2.7, 4.7  4.7
Run Code Online (Sandbox Code Playgroud)

我有各种尝试......我的最新尝试是以下 - 它提供了整个列的最大csi分数,而不是单个行的csi数字...

library(stringr)
numextract <- function(string){ 
  str_extract(string, "\\-*\\d+\\.*\\d*")
} 
df$max_csi <- max(numextract(df$csi))
Run Code Online (Sandbox Code Playgroud)

谢谢

r

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

标签 统计

r ×2

grep ×1

summarize ×1