我想计算列中每个组的字符串出现次数.在这种情况下,字符串通常是字符列中的子字符串.
我有一些数据,例如
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)
先感谢您
我在数据框中有一个包含数字的字符字段,例如(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)
谢谢