mutate是一个动词,用于在R编程语言中使用dplyr包在数据框中创建新列。
我有一个来自 Qualtrics 调查的数据集,其中有一个表单字段格式的问题,该问题将响应分为多个列,所有列的名称都与问题文本相同,除了表单 fi...
Spring-Cloud-Gateway 请求标头过滤器不起作用
我想删除 spring-cloud-gateway 中的授权标头。 spring 文档不可能做到这一点,因为标头是只读的。以下代码抛出 UnexpectedOperationExcept...
为什么: data.frame(a=c(TRUE,NA)) %>% 变异(a=replace_na(FALSE)) 回报 一个 1 错误 2 错误 因此将整个列设置为该值而不仅仅是 NA 元素? 在这种情况下,变异是
我不明白为什么这段代码不起作用: testdf <- data.frame(a=c("Hello", "Hi", "Howy")) varname <- "a" testdf %>% 变异(b=nchar({{varname}...
我有2个案例: 同一列可以有以下情况: 1.- 具有 NA 和价值观。 2.- 只有 NA。 我需要在同一列中对这两种情况进行变异,但是,当我尝试 cas...
我正在尝试改变这个 df 以获得两个新变量作为调查 ID 的形式。从 df 我想创建一个变量“调查”,它将按“年份”“日期”“
如何使用 dplyr 包中的函数 mutate() 标准化月份数不等的两类季节
在实地工作期间,我们收集了每月、每年珊瑚礁中海豚数量的数据。我已将数据分为冬季和夏季的季节。 这是我的 dplyr 方法: 第 1 步:计算...
使用 R 将 CSV 文件拆分为多个文件,而不更改其数据格式
我有一个 myfile.csv 文件,其列由管道 (|) 分隔,我想使用 R 将文件拆分为 2 个具有相同行数的 csv 文件,并且每个 csv 文件保留标题。 .
使用相同的函数和命名约定在几个不同的子集上进行 mutate()
我有一个非常宽的数据框和一些命名子集: df <- data.frame(matrix(ncol = 200, nrow = 200)) df <- as.data.frame( apply(df, 1, function(x){return(sample(c(1,2,N...
Dplyr 使用相同的函数和命名约定对几个不同的子集进行变异
假设我有一个非常宽的数据框和一些命名子集: df <- data.frame(matrix(ncol = 200, nrow = 200)) df <- as.data.frame( apply(df, 1, function(x){return(sample(c(1...
如何从特定列检查奇数或偶数并创建返回“奇数”或“偶数”的新列
我的数据集中有一个名为“Count”的特定列。我想检查此列以查看数字是奇数还是偶数,然后在...
我想保存每个id中level变量中第一个TRUE的位置。我正在执行以下操作: 图书馆(小标题) 图书馆(针织品) 库(kableExtra) 图书馆(tidyverse) 图书馆(lme4) 图书馆(
让我们考虑一下标记及其变异系数 (cv) 和三个参考 cv (rcv): 初始数据: 标记 CV rcv1 rcv2 rcv3 让我们考虑 markers 及其变异系数 (cv) 和三个参考 cv (rcv): 初始数据: marker cv rcv1 rcv2 rcv3 <chr> <dbl> <dbl> <dbl> <dbl> 1 AAA 7 10 8 5 2 BBB 4 5 3 1 3 CCC 11 20 15 12 4 DDD 8 7 5 2 我想改变三个新变量: rcv_value:大于rcv的最接近的cv值 rcv_name:该rcv_value的列名称 cv_conclusion: 确定,如果 cv 低于 rcvs 中的一个或另一个 ko 如果 cv 高于最高 rcv 所需输出: marker cv rcv1 rcv2 rcv3 rcv_value rcv_name cv_conclusion <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> 1 AAA 7 10 8 5 8 rcv2 ok 2 BBB 4 5 3 1 5 rcv1 ok 3 CCC 11 20 15 12 12 rcv3 ok 4 DDD 8 7 5 2 7 rcv1 ko 注意:我的真实数据有超过 100 个 markers 和大约 10 个不同的 rcv。 我失败的地方是从相应的rcv_name中获取rcv_value(使用mutate和case_when)。 感谢您的帮助。 数据: dat0 <- structure(list(marker = c("AAA", "BBB", "CCC", "DDD"), cv = c(7, 4, 11, 8), rcv1 = c(10, 5, 20, 7), rcv2 = c(8, 3, 15, 5), rcv3 = c(5, 1, 12, 2)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -4L)) 你可以试试这个: library(dplyr) dat0 %>% rowwise() %>% mutate(rcv_value = { x <- c_across(rcv1:rcv3) x[order(abs(x - cv), -x)][1] }) %>% ungroup() %>% mutate( rcv_name = do.call(coalesce, across(rcv1:rcv3, ~ ifelse(.x == rcv_value, cur_column(), NA))), cv_conclusion = ifelse(rcv_value >= cv, "ok", "ko") ) # # A tibble: 4 × 8 # marker cv rcv1 rcv2 rcv3 rcv_value rcv_name cv_conclusion # <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> # 1 AAA 7 10 8 5 8 rcv2 ok # 2 BBB 4 5 3 1 5 rcv1 ok # 3 CCC 11 20 15 12 12 rcv3 ok # 4 DDD 8 7 5 2 7 rcv1 ko 在这种情况下,重新整形为长会让事情变得更加简单。首先使用tidyr::pivot_longer(),然后dplyr::mutate(.by = marker)按组执行这些操作,然后tidyr::pivot_wider()将数据恢复到原始形状。 library(dplyr) library(tidyr) dat0 |> pivot_longer( -c(marker, cv), names_to = "rcv" ) |> mutate( rcv_value = min(value[value > cv]), cv_conclusion = if_else(is.infinite(rcv_value), "ko", "ok"), rcv_value = if_else(is.infinite(rcv_value), max(value), rcv_value), rcv_name = rcv[rcv_value == value], .by = marker ) |> pivot_wider( id_cols = c(marker, cv, rcv_value, rcv_name, cv_conclusion), names_from = rcv, values_from = value ) |> select( # does not drop columns just changes order to specified one marker, cv, rcv1:rcv3, rcv_value:cv_conclusion ) # # A tibble: 4 × 8 # marker cv rcv1 rcv2 rcv3 rcv_value rcv_name cv_conclusion # <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> # 1 AAA 7 10 8 5 8 rcv2 ok # 2 BBB 4 5 3 1 5 rcv1 ok # 3 CCC 11 20 15 12 12 rcv3 ok # 4 DDD 8 7 5 2 7 rcv1 ko 如果您可以为 rcv1:rcv3 列中的每个标记建立联系,则您必须指定您想要 rcv_name 说的内容。如果您只想要第一个值,您可以将该行更改为 rcv_name = rcv[rcv_value == value][1]。或者,您可以创建一个列表列来存储所有值,例如list(rcv[rcv_value == value]),或将它们粘贴在一起,例如rcv_name = paste(rcv[rcv_value == value], collapse = ",") 创建类似 "rcv2,rcv3" 的列。
让我们考虑一下标记及其变异系数 (cv) 和三个参考 cv (rcv): 初始数据: 标记 CV rcv1 rcv2 rcv3 让我们考虑 markers 及其变异系数 (cv) 和三个参考 cv (rcv): 初始数据: marker cv rcv1 rcv2 rcv3 <chr> <dbl> <dbl> <dbl> <dbl> 1 AAA 7 10 8 5 2 BBB 4 5 3 1 3 CCC 11 20 15 12 4 DDD 8 7 5 2 我想改变三个新变量: rcv_value:大于rcv的最接近的cv值 rcv_name:该rcv_value的列名称 cv_conclusion: 确定,如果 cv 低于 rcvs 中的一个或另一个 ko 如果 cv 高于最高 rcv 所需输出: marker cv rcv1 rcv2 rcv3 rcv_value rcv_name cv_conclusion <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> 1 AAA 7 10 8 5 8 rcv2 ok 2 BBB 4 5 3 1 5 rcv1 ok 3 CCC 11 20 15 12 12 rcv3 ok 4 DDD 8 7 5 2 7 rcv1 ko 注意:我的真实数据有超过 100 个 markers 和大约 10 个不同的 rcv。 我失败的地方是从相应的rcv_name中获取rcv_value(使用mutate和case_when)。 感谢您的帮助。 数据: dat0 <- structure(list(marker = c("AAA", "BBB", "CCC", "DDD"), cv = c(7, 4, 11, 8), rcv1 = c(10, 5, 20, 7), rcv2 = c(8, 3, 15, 5), rcv3 = c(5, 1, 12, 2)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -4L)) 在这种情况下,重新整形为长会让事情变得更加简单。首先使用 tidyr::pivot_longer(),然后使用 dplyr::group_by() 标记,然后使用 tidyr::pivot_wider() 将数据恢复到原始形状。 library(dplyr) library(tidyr) dat0 |> pivot_longer( -c(marker, cv), names_to = "rcv" ) |> mutate( rcv_value = min(value[value > cv]), cv_conclusion = if_else(is.infinite(rcv_value), "ko", "ok"), rcv_value = if_else(is.infinite(rcv_value), max(value), rcv_value), rcv_name = rcv[rcv_value == value], .by = marker ) |> pivot_wider( id_cols = c(marker, cv, rcv_value, rcv_name, cv_conclusion), names_from = rcv, values_from = value ) |> select( marker, cv, rcv1:rcv3, rcv_value:cv_conclusion ) # # A tibble: 4 × 8 # marker cv rcv1 rcv2 rcv3 rcv_value rcv_name cv_conclusion # <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> # 1 AAA 7 10 8 5 8 rcv2 ok # 2 BBB 4 5 3 1 5 rcv1 ok # 3 CCC 11 20 15 12 12 rcv3 ok # 4 DDD 8 7 5 2 7 rcv1 ko
在 dplyr mutate 中使用自定义 case_when 函数
我已经查看了许多与我的问题相关的帖子,但我似乎无法弄清楚我的问题。 我有一个基本表,随着收集(NFL 赛季)的继续,该表将包含附加列。我无法...
我有一个包含很多列的数据集。 其中大多数是数字,但也有一些是字符。尤其, 我有一个字符列“名称”,其中包含字符串元素(peo 的名称...
在 R 中,将列的值(按行)添加到任何名为日期的列(并将结果输出为日期)
我正在尝试编写简单的代码,使用 across() 将数据框列的值添加到另一列中的日期,以查找带有后缀“_date”的所有列。 例子...
我的数据如下所示 结构(列表(年份 = c(2017, 2017, 2017, 2017, 2018, 2018, 2018, 2018, 2019, 2019, 2019, 2019, 2017, 2017, 2018, 2018, 2019, 2019, 2017, 2017, 2017, 2017, 2018, 2018, 2018,
高效的 R 代码,根据同一数据帧中的相关行为数据帧中的每一行分配时间戳(年份)
我有一个客户交易数据集,需要基于一组相当复杂的“时间”规则创建一个新列(Vintage): 简而言之,要求是标记每个条目(ro...
如何根据 R 中每行中存在的缺失/NA 数量来计算一定数量的列中每行中有多少个 1?
我想创建一个新列“X11”,根据选定数量的列中有多少个 NA 有条件地对所有 1 求和。在本例中,我查看 4 个变量:...