标签: data-wrangling

R:更难的pivot_longer参数

我有一个具有这些名称的数据框:


df <- tribble( ~ state, ~ county, ~ kfr_asian_pooled_p25, ~ kfr_asian_pooled_p75, 
               ~ kfr_black_pooled_p25, ~ kfr_black_pooled_p75, 
               ~ kfr_pooled_pooled_p25, ~ kfr_pooled_pooled_p75, ~ kfr_white_pooled_p25, 
               ~ kfr_white_pooled_p75, ~ kids_count, ~ kfr_asian_pooled_p25_se, 
               ~ kfr_asian_pooled_p75_se, ~ kfr_black_pooled_p25_se, 
               ~ kfr_black_pooled_p75_se, ~ kfr_white_pooled_p25_se, 
               ~ kfr_white_pooled_p75_se,
               1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)

Run Code Online (Sandbox Code Playgroud)

当然,数据集很大,但我想要实现的是利用其最大潜力来延长时间。我的意思是同时获取多个变量并旋转它们及其名称。

df <- tribble(~ state, ~ county, ~ kids_count,   ~ race, ~ percentile,   ~ se, ~ value,
                     1,       2,            3,  "asian",        "p25",   TRUE,   value,
                     2, …
Run Code Online (Sandbox Code Playgroud)

pivot r tidyr data-wrangling

2
推荐指数
1
解决办法
119
查看次数

在 R 中查找不在另一个数据帧的另一列中的列中的元素

我有两个数据框,看起来像这样:

dat <- data.frame(col1 = c(1:100))
dat2 <- data.frame(col2 = c(5:105))
Run Code Online (Sandbox Code Playgroud)

dat我想找到 中但不在 中的所有元素dat2。我怎样才能做到这一点?

谢谢!

r dplyr data-wrangling

2
推荐指数
1
解决办法
2831
查看次数

想要根据因子列获取与平均值偏差的值的数据框

例子:

所以可以说我有这个数据框。

x = data.frame(factor = as.factor(c('a','a','b','b','c','c')),value1 = c(1,3,2,4,5,3), value2 = c(7,9,3,4,9,3))


    factor value1 value2
1      a      1      7
2      a      3      9
3      b      2      3
4      b      4      4
5      c      5      9
6      c      3      3
Run Code Online (Sandbox Code Playgroud)

我知道如何获得每个因素的平均值,我使用这种方法:

aggregate(x[,c(2,3)], list(x$factor), mean, na.rm = T )

Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

  Group.1 value1 value2
1       a      2    8.0
2       b      3    3.5
3       c      4    6.0
Run Code Online (Sandbox Code Playgroud)

我现在如何从原始数据框中的每个值中减去其因子的相应平均值。我使用的实际数据集很大,所以需要有一个很好的方法,我已经设法做到了,但我使用了复杂的 for 循环。

所以我想要的输出是:

  factor value1 value2
1      a     -1   -1.0
2      a      1    1.0
3      b …
Run Code Online (Sandbox Code Playgroud)

r dplyr data-cleaning tidyverse data-wrangling

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

准备用于发布的聚合数据框

我有一个 Pandas 聚合数据框,如下所示:

import pandas as pd
agg_df = pd.DataFrame({'v1':['item',  'item', 'item', 'item', 'location',  'status', 'status'],
                      'v2' :['bed', 'lamp', 'candle',   'chair',  'home', 'new',   'used' ],
                    'count':['2',  '2', '2',   '1',   '7',  '4',   '3' ]})

agg_df
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想为学术出版做准备,我需要一个像这样的新数据框:

# item     bed    2
#          lamp   2
#          candle 2
#          chair  1
# location home   7
# status   new    4
#          used   3
Run Code Online (Sandbox Code Playgroud)

如何创建这样的数据框?

python pandas data-wrangling

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

按列组合的完整案例数

我有一个包含数百列的大型数据库,我想知道两列的每种可能组合有多少完整案例。

例子:

library(data.table)
DT <- data.table(V1 = c(NA, NA, NA, 3, 5),
                 V2 = c("a", "b", "c", NA, NA),
                 V3 = c(1, 5, NA, 4, 5),
                 V4 = c(NA, NA, NA, NA, NA))

# > DT
#    V1   V2 V3 V4
# 1: NA    a  1 NA
# 2: NA    b  5 NA
# 3: NA    c NA NA
# 4:  3 <NA>  4 NA
# 5:  5 <NA>  5 NA
Run Code Online (Sandbox Code Playgroud)

我期望的是这样的:

在此处输入图片说明

对角线表示该变量的完整案例数。我想过使用某种 for 循环,但它变得非常麻烦。也许功能/解决方案已经存在?

r dataframe data.table data-wrangling

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

对组内的行进行随机排序

我有一个数据框(df1),它在给定组内有多次运行。现在,我想在不改变数据帧的整体结构的情况下对给定组内的运行进行洗牌。我的意思是,第 1 列(组)应保持不变,但第二列(运行)的顺序应在该组的行范围内进行改组。df2 中给出了所需的结果。

df1 <- structure(list(Group = c("A", "A", "A", "B", "B", "B", "B", "B", 
"C", "C", "C", "C"), Run = c(1L, 2L, 3L, 1L, 2L, 3L, 4L, 5L, 
1L, 2L, 3L, 4L)), class = "data.frame", row.names = c(NA, -12L
))

df2 <- structure(list(Group = c("A", "A", "A", "B", "B", "B", "B", "B", 
"C", "C", "C", "C"), Run = c(1L, 3L, 2L, 2L, 1L, 3L, 4L, 5L, 
1L, 3L, 4L, 2L)), class = "data.frame", row.names = c(NA, -12L
)) …
Run Code Online (Sandbox Code Playgroud)

sorting r dataframe data-wrangling

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

如何取消透视 R 数据框中的特定列

我有一个 R 格式的数据框,如下表所示。我想将列“M1.1”、“M1.2”和“M1.3”合并为单个列“M1”,以便条目位于自己的行上(其他列中的 id 和值将重复)如第二个表所示。我可以使用什么函数来完成此任务?

ID M1.1 M1.2 M1.3 M2 M3 M4 M5 M6
测试一个 测试t 测试一个 测试y 测试 测试t 测试y 测试你 测试w
测试 测试r 测试一个 测试时间 测试r 测试j 测试j 测试w 测试d
ID M1 M2 M3 M4 M5 M6
测试一个 测试t 测试 测试t 测试y 测试你 测试w
测试一个 测试一个 测试 测试t 测试y 测试你 测试w
测试一个 测试y 测试 测试t 测试y 测试你 测试w
测试 测试r 测试r 测试j 测试j 测试w 测试d
测试 测试一个 测试r 测试j 测试j 测试w 测试d
测试 测试时间 测试r 测试j 测试j 测试w …

r unpivot reshape data-wrangling

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

R 替代 full_join、right_join、合并而不增加行?

考虑 2 个 dfs:

df1:

可乐 上校 B 上校
汤姆 冰淇淋 0.2
汤姆 糖果 0.4
汤姆 棒糖 0.6
鲍勃 糖果 0.1
安倍 糖果 0.1

df2:

可乐 寒冷的 科尔
汤姆 糖果 0.5
汤姆 巧克力 0.2
汤姆 可乐 0.3

如果我使用full_join,right_joinmergewith by = "Col A"(with all.y=TRUE),我会将每个“排列”作为自己的行:

df3:

可乐 上校 B 上校 寒冷的 科尔
汤姆 冰淇淋 0.2 糖果 0.5
汤姆 冰淇淋 0.2 巧克力 0.2
汤姆 冰淇淋 0.2 可乐 0.3
汤姆 糖果 0.4 糖果 0.5
汤姆 糖果 …

r dataframe tibble data-wrangling

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

如何根据条件删除R中的重复行?

我有以下数据:

df <- data.frame(id = c("001", "001", "001", "002", "002", "003", "003"),
                 x = c(0, 0, 0, 0, 1, 0, 1))

 id x
001 0
001 0
001 0
002 0
002 1
003 0
003 1
Run Code Online (Sandbox Code Playgroud)

数据的性质使得某些数据可能id只有行x = 0。对于x = 1给定的id,它只出现一次,并且也出现在该 的最后一行id。我想删除每个 的重复行id,但对于x = 1an id,我只想保留该行。

所需的输出:

 id x
001 0
002 1
003 1
Run Code Online (Sandbox Code Playgroud)

tidyverse优选解决方案。谢谢!

r dplyr data-cleaning tidyverse data-wrangling

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

过滤每人 2 个最高的唯一值

我被困在我的项目中的数据整理步骤,我想知道是否有人能够帮助我。

我拥有的数据框的一部分是这样的:

GPI
1 12 10
1 12 12
1 11 18
1 10 20
2 10 12
2 8 14
2 9 16

但是,我按 Person 分组并且只保留 2 个最大的唯一月份值的行。因此,对于第 1 个人,这将是第 12 和 11 个月,对于第 2 个人,这将是第 10 和第 9 个月。最终我想平均每个人的 GPI。

桌子应该是这样的

GPI 平均_GPI
1 12 10 8
1 12 7 8
1 11 7 8
2 10 12 14
2 9 16 14

希望其他人可以帮助我解决这个问题。

这是创建第一个表的代码:import pandas as pd

df = pd.DataFrame({'Person':[1, 1, 1, 1, …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas data-wrangling

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