dplyr 相关问题

将此标记用于与dplyr包中的函数相关的问题,例如group_by,summarize,filter和select。

错误:数据源必须是字典(dplyr)

虽然有更多的列和观察结果,但我的数据框如下所示: dt <- data.frame(hid = c(1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4), syear = c(2000, 2001, 2003,

回答 6 投票 0

将值传递到包含管道的函数时 %>% 的行为

下面的示例演示了将对象传递给 deparse() 和 Replace() 会产生不同的输出,具体取决于对象是否使用 %>% 传递给函数以及

回答 1 投票 0

在删除特定值字符串的同时进行连接

我在 R 中有一个名为 df 的数据框: A = c("好的","WA","WA","好的","WA") B = c("WB","好的","好的","好的","WB"...

回答 1 投票 0

如何使用 dplyr 计算列中出现的次数

我正在尝试计算单列中出现的次数。这是我正在使用的 df 的片段: 这是我到目前为止的代码: my_df$day <- weekdays(as.Date(my_df$deadline))

回答 2 投票 0

尝试通过 for 循环计算数据框中多列的比率

我正在使用 R 计算列中的简单比率并将这些值保存在另一个表中。在包含的 str 中看到的列是一月中的每一天和一月中每一天的每小时。对于

回答 1 投票 0

在管道中动态连接数据框中的列

我有一个将数据帧合并在一起的过程,然后通过将一些列连接在一起来生成 ID 变量。然而,需要连接的列的名称...

回答 1 投票 0

找到组内第一个 TRUE

我想保存每个id中level变量中第一个TRUE的位置。我正在执行以下操作: 图书馆(小标题) 图书馆(针织品) 库(kableExtra) 图书馆(tidyverse) 图书馆(lme4) 图书馆(

回答 1 投票 0

dplyr 的“across”功能有多列输入版本吗?

我今天必须写一个这样的函数 数据1%>% 总结( ab1 = fn(a1, b1), ab2 = fn(a2, b2), ab3 = fn(a3, b3) ) # 想象一下如果有 100 个 如果 fn 是单个参数

回答 3 投票 0

通过排除R中的非营业时间来计算actual_tat

我有一个像这样的数据框 图书馆(dplyr) 库(润滑) 票证 ID <- c("id_1234","id_2234","id_1334","id_1244","id_1294", ...

回答 1 投票 0

如何从“mutate”内的一个函数返回多列并允许我命名输出列?

考虑以下代码: 图书馆(dplyr) a = 数据.frame(a = 1:3) abc = \(x) data.frame(x/2, x/3) %>% 变异(abc(a)) 返回 x.2 x.3 1 1 0.5 0.3333333 2 2 1.0 0.6666667 3 3 1.5 1.

回答 1 投票 0

将地图连接在一起

使用“leaflet”库,我制作了以下3张地图: #加载库 图书馆(dplyr) 图书馆(传单) 图书馆(地圈) 库(叶同步) 图书馆(地图视图) ##地图1 地图数据_1 <-...

回答 1 投票 0

加入形状文件和 CSV 文件而不丢失/获取数据

我正在尝试将 .shp 文件(小区域多边形的 2644 个观测值)与 .csv 文件(其中一些小区域的每月数据的 7,760 个观测值)连接起来,以创建一个交互式

回答 1 投票 0

使用 dplyr 时 if_else(返回太长的向量)和 case_when 的区别

这是一个完全构建的示例。它只是为了理解概念上的差异。 我正在运行这段代码 图书馆(棕榈企鹅) 企鹅%>% group_by(物种) %>% 过滤...

回答 1 投票 0

使用 for 循环遍历列名向 gt 表添加标签

我有以下数据表。 图书馆(dplyr) 图书馆(gt) df <- tibble( `model 2000` = c("a", "b"), `car 2022` = c("f", "d") ) I would ...

回答 2 投票 0

安装 R 包后可以删除 LinkingTo 依赖项吗?

这里是初级 R 开发人员。我不太清楚 R 包依赖项中 LinkingTo 字段的含义。 我想做的是在安装后删除 BH 包...

回答 1 投票 0

在数据框中堆叠具有重叠值的不同列

df<- data.frame(x=c(1,2,3,4), y1=c('a','a',NA,NA), y2=c(NA,NA,'b','b')) x y1 y2 1 a 2个 3 a b --> a 和 b 具有相同的值 3 4 df <- data.frame(x=c(1,2,3,4), y1=c('a','a',NA,NA), y2=c(NA,NA,'b','b')) x y1 y2 1 a <NA> 2 a <NA> 3 a b --> a and b share the same value of 3 4 <NA> b 我正在尝试将 y1 和 y2 堆叠到新的 y 列中,以便 y1 和 y2 的每个非 NA 值都获得其相应的 x 值。 输出应如下所示: x y 1 a 2 a 3 a 3 b 4 b 3 重复出现,因为它同时出现在 a 和 b 中。 我尝试了 bind_rows 中的 dplyr,但它似乎仅适用于不同的数据帧。 你试试 reshape(df2, idvar="x", direction="long", varying=2:3, v.names="y") |> na.omit() |> subset(select=-time) 给予 x y 1.1 1 a 2.1 2 a 3.1 3 a 3.2 3 b 4.2 4 b 注意 输入更正: df2 = data.frame(x=c(1,2,3,4), y1=c('a','a','a',NA), y2=c(NA,NA,'b','b'))

回答 1 投票 0

从许多列中相应的选定值中改变列名

让我们考虑一下标记及其变异系数 (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" 的列。

回答 2 投票 0

如何从r中的许多列中相应的选定值中改变列名?

让我们考虑一下标记及其变异系数 (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

回答 1 投票 0

在 dplyr mutate 中使用自定义 case_when 函数

我已经查看了许多与我的问题相关的帖子,但我似乎无法弄清楚我的问题。 我有一个基本表,随着收集(NFL 赛季)的继续,该表将包含附加列。我无法...

回答 1 投票 0

选择满足所需条件的分组样本

我有一个类似的数据框 原始.df <- data.frame(id = c("X01", "X02", "X03", "X04", "X05", "X06", "X07", "X08", "...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.