gpt4 book ai didi

r - 在行之间应用函数,按变量分组,计算其他列中变量之间的所有可能组合

转载 作者:行者123 更新时间:2023-12-04 22:28:45 27 4
gpt4 key购买 nike

我在 R 中有一个大的 data.frame,它的简化版本看起来像这样(真实的 data.frame 在“颜色”列中有 20 种颜色,在“数字”列中有 10 个不同的数字:

Color   Number  Y
blue 1 5
blue 2 3
blue 3 2
red 1 5
red 2 8
red 3 2
green 1 2
green 2 9
green 3 3

对于“颜色”中的每种颜色,我想通过比较“Y”列的相应值,在“数字”列中的所有数字组合之间应用一个函数。让我们以一个简单的函数为例:
if x >= y, print 1, else print 0 # where x and y represent the first and second values to be compared, respectively 

我将其作为输出 data.frame 获得:
Color   Comparison  Y
blue 1_vs_2 1
blue 1_vs_3 1
blue 2_vs_1 0
blue 2_vs_3 1
blue 3_vs_1 0
blue 3_vs_2 0
red 1_vs_2 0
red 1_vs_3 1
red 2_vs_1 1
red 2_vs_3 1
red 3_vs_1 0
red 3_vs_2 0
green 1_vs_2 0
green 1_vs_3 0
green 2_vs_1 1
green 2_vs_3 1
green 3_vs_1 1
green 3_vs_2 0

最佳答案

使用 dplyr :

df <- data.frame(Color = c(rep("blue",3), rep("red", 3), rep("green", 3)),
Number = rep(1:3, 3),
Y = c(5,3,2,5,8,2,2,9,3))

df %>%
left_join(df, by = c("Color")) %>%
filter(Number.x != Number.y) %>%
mutate(Comparison = sprintf("%s_vs_%s", Number.x, Number.y)) %>%
mutate(Y = ifelse(Y.x - Y.y >= 0, 1, 0)) %>%
select(Color, Comparison, Y)

Color Comparison Y
1 blue 1_vs_2 1
2 blue 1_vs_3 1
3 blue 2_vs_1 0
4 blue 2_vs_3 1
5 blue 3_vs_1 0
6 blue 3_vs_2 0
7 red 1_vs_2 0
8 red 1_vs_3 1
9 red 2_vs_1 1
10 red 2_vs_3 1
11 red 3_vs_1 0
12 red 3_vs_2 0
13 green 1_vs_2 0
14 green 1_vs_3 0
15 green 2_vs_1 1
16 green 2_vs_3 1
17 green 3_vs_1 1
18 green 3_vs_2 0

关于r - 在行之间应用函数,按变量分组,计算其他列中变量之间的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42444590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com