- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法使用pivot_longer
和 pivot_wider
在变量的子集上?这是一个例子。首先,我将创建一个具有所需起始结构的数据框。
library(tidyverse)
# Assume this as starting df
arrests <- USArrests %>%
as_tibble(rownames = "State") %>%
pivot_longer(-State, names_to = "Crime", values_to = "Value") %>%
group_by(State) %>%
mutate(Total = sum(Value)) %>%
ungroup()
arrests
# A tibble: 200 x 4
State Crime Value Total
<chr> <chr> <dbl> <dbl>
1 Alabama Murder 13.2 328.
2 Alabama Assault 236 328.
3 Alabama UrbanPop 58 328.
4 Alabama Rape 21.2 328.
5 Alaska Murder 10 366.
6 Alaska Assault 263 366.
7 Alaska UrbanPop 48 366.
8 Alaska Rape 44.5 366.
9 Arizona Murder 8.1 413.
10 Arizona Assault 294 413.
# ... with 190 more rows
arrest
数据框。现在我想把“Total”折叠成“Crime”,这样“Total”就是Crime中的一个值,就像“Murder”一样。
pivot_wider
关于“犯罪”,但仅适用于
Crime == "Total"
的值.
最佳答案
一种选择是 add_row
.在按“状态”进行分组后,循环遍历 list
与 map
并添加一行( add_row
from tibble
)与“Total”列的第一个值并删除“Total”列
library(dplyr)
library(purrr)
library(tibble)
arrests2 <- arrests %>%
group_split(State) %>%
map_dfr(~ .x %>%
add_row(State = .$State[1], Crime = 'Total',
Value = .$Total[1]) %>%
select(-Total))
arrests2
# A tibble: 250 x 3
# State Crime Value
# * <chr> <chr> <dbl>
# 1 Alabama Murder 13.2
# 2 Alabama Assault 236
# 3 Alabama UrbanPop 58
# 4 Alabama Rape 21.2
# 5 Alabama Total 328.
# 6 Alaska Murder 10
# 7 Alaska Assault 263
# 8 Alaska UrbanPop 48
# 9 Alaska Rape 44.5
#10 Alaska Total 366.
# … with 240 more rows
summarise
使用“总计”值,然后执行
bind_rows
arrests %>%
group_by(State) %>%
summarise(Crime = 'Total', Value = first(Total)) %>%
bind_rows(arrests %>% select(-Total), .) %>%
arrange(State)
pivot_longer
library(tidyr)
arrests %>%
pivot_longer(cols = Value:Total) %>%
mutate(Crime = replace(Crime, name == 'Total', 'Total')) %>%
select(-name) %>%
distinct()
# A tibble: 250 x 3
# State Crime value
# <chr> <chr> <dbl>
# 1 Alabama Murder 13.2
# 2 Alabama Total 328.
# 3 Alabama Assault 236
# 4 Alabama UrbanPop 58
# 5 Alabama Rape 21.2
# 6 Alaska Murder 10
# 7 Alaska Total 366.
# 8 Alaska Assault 263
# 9 Alaska UrbanPop 48
#10 Alaska Rape 44.5
# … with 240 more rows
filter
出犯罪为“总”的那一行
arrests2 %>%
group_by(State) %>%
mutate(Total = Value[Crime == 'Total']) %>%
filter(Crime != 'Total')
# A tibble: 200 x 4
# Groups: State [50]
# State Crime Value Total
# <chr> <chr> <dbl> <dbl>
# 1 Alabama Murder 13.2 328.
# 2 Alabama Assault 236 328.
# 3 Alabama UrbanPop 58 328.
# 4 Alabama Rape 21.2 328.
# 5 Alaska Murder 10 366.
# 6 Alaska Assault 263 366.
# 7 Alaska UrbanPop 48 366.
# 8 Alaska Rape 44.5 366.
# 9 Arizona Murder 8.1 413.
#10 Arizona Assault 294 413.
# … with 190 more rows
关于r - dplyr 在变量子集上使用 pivot_longer 和 pivot_wider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60895646/
我正在处理一个包含 528 列和 2,643,246 行的数据框。其中八个是字符变量,其余是整数。总共有 11.35 GiB 的数据,我的可用 RAM 为 164 GiB。 我现在想在所述数据框上运行
我再次努力使用 pivot_longer 将宽 df 转换为长 df 数据框是针对不同效果大小和样本大小进行功效分析的结果,这就是原始 df 的样子: es_issue_owner es_inde
我有一个关于 tidyr::pivot_longer() 的问题。 假设我从一个假想的数据框开始。想象一下,人们被问到关于两个流派的两个问题。 SQ1_2 将是关于第一种类型的第二个问题。 set.s
这个问题在这里已经有了答案: How to use Pivot_longer to reshape from wide-type data to long-type data with multip
我正在使用 tidyr 中的 pivot_longer 将数据帧从宽转换为长。我希望使用所有列并在列中维护行名。较早的melt 函数在此调用中完美运行 w1 % pivot_longer() Erro
我有以下数据框: library(tidyverse) dat % group_by(Scenario) %>% mutate_at(vars(-group_cols()), .funs =
我有一个如下所示的数据集。 # A tibble: 1 x 4 hhm1q001 hhm2q001 hhm1q002 hhm2q002 1 blue re
我有一些看起来很乱的数据,其中多列有多个逗号分隔值: df % select(-ends_with("dur")) %>% pivot_longer(cols = ends_with("aoi
尝试使用 pivot_longer。我不知道如何使用“names_sep”或“names_pattern”来解决这个问题。 dat % mutate(limit=ifelse(limit==
这个问题在这里已经有了答案: How to use Pivot_longer to reshape from wide-type data to long-type data with multip
这个问题在这里已经有了答案: How to use Pivot_longer to reshape from wide-type data to long-type data with multip
我需要将数据框转换为更长的格式。例如,我的数据框会像 df %tidyr::pivot_longer(c("x1","x2","y1","y2"),
我有一个具有这些名称的数据框: df % select(!pooled) %>% mutate(se=!is.na(se)) # A tibble: 14 x 7 state count
上下文 我想将df(宽格式)更改为df_expected(长格式)但失败了。 我知道我需要使用 pivot_longer,但是我需要转换多个列。 > df # A tibble: 2 × 5
这个问题在这里已经有了答案: How to reshape Panel / Longitudinal survey data from wide to long format using pivot
我想知道为什么我的 pivot_longer()下面的调用返回 value 下的嵌套输出柱子? foo % mutate(x = rnorm(n(), mx, 1), y =
我有一个 df 的形式: df 1 1 02 0 1 2 1 03 1 2 3 1 04 0 3 4
我正在尝试使用 R 中的 pivot_longer() 转换表格。但分隔不是通过任何常见符号(例如“_”或“.”)进行的。而是列名称的结尾方式(“B”或“T”)。我尝试使用正则表达式,但不太成功。 下
我有一个带有一系列成对列的“宽”data.frame。我的目标是使用pivot_longer 取消旋转它。 对于所有列中带有前缀的成对列有很多帮助。但在我的情况下,只有一半的对有前缀,我不知道如何定义
简单的 pivot_longer 问题。鉴于: library(tidyverse) df 10 4 2 exit_date 1
我是一名优秀的程序员,十分优秀!