如何将某些条目连接在一起以形成R中的新列

如何将某些条目连接在一起以形成R中的新列,r,R,我有一个tibble数据帧,df: df <- structure(list(prob_blue = c(0.929572356778338, 0.0260967458595827, 0.941634205740072, 0.000908530458014964, 0, 0.0322897338624395, 0.96947026747672, 0.0549822742699063, 0.39632563113532, 1.49342246697533e-05 ), prob_red

我有一个tibble数据帧,df:

df <- structure(list(prob_blue = c(0.929572356778338, 0.0260967458595827, 
0.941634205740072, 0.000908530458014964, 0, 0.0322897338624395, 
0.96947026747672, 0.0549822742699063, 0.39632563113532, 1.49342246697533e-05
), prob_red = c(0.0289283895123213, 0.125496787021455, 0.0294092713166607, 
0.000337896513434257, 1, 0.945123549045104, 0.0189977638740104, 
0.00632470440415813, 0.505560271745452, 0.999781439802145), prob_green = c(0.0414992537093407, 
0.848406467118963, 0.0289565229432678, 0.998753573028551, 0, 
0.0225867170924565, 0.0115319686492698, 0.938693021325936, 0.0981140971192273, 
0.000203625973185612), predicted_colour = c("blue", "green", 
"blue", "green", "red", "red", "blue", "green", "red", "red"), 
    actual_colour = c("green", "green", "blue", "green", "red", 
    "blue", "blue", "green", "green", "red")), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))

# A tibble: 10 x 5
   prob_blue prob_red prob_green predicted_colour actual_colour
       <dbl>    <dbl>      <dbl> <chr>            <chr>        
 1 0.930     0.0289     0.0415   blue             green        
 2 0.0261    0.125      0.848    green            green        
 3 0.942     0.0294     0.0290   blue             blue         
 4 0.000909  0.000338   0.999    green            green        
 5 0         1          0        red              red          
 6 0.0323    0.945      0.0226   red              blue         
 7 0.969     0.0190     0.0115   blue             blue         
 8 0.0550    0.00632    0.939    green            green        
 9 0.396     0.506      0.0981   red              green        
10 0.0000149 1.00       0.000204 red              red 
目前我是这样做的:

blue <- df %>% 
    filter(actual_colour == "blue") %>%
    select(actual_colour, prob = prob_blue, predicted_colour)

green <- df %>% 
    filter(actual_colour == "green") %>%
    select(actual_colour, prob = prob_green, predicted_colour)

red <- df %>% 
    filter(actual_colour == "red") %>%
    select(actual_colour, prob = prob_red, predicted_colour)

colours <- rbind(red, green, blue)
blue%
过滤器(实际颜色=“蓝色”)%>%
选择(实际颜色,概率=概率蓝色,预测颜色)
绿色%
过滤器(实际颜色==“绿色”)%>%
选择(实际颜色,概率=概率绿色,预测颜色)
红色%
滤光片(实际颜色=“红色”)%>%
选择(实际颜色,概率=概率红色,预测颜色)
颜色使用,主要技巧是使用
names\u prefix
参数。如果您想去掉
name
列,只需在链的末尾添加
select(-name)

library(tidyverse)

df %>%
    pivot_longer(cols = starts_with("prob"),
                 names_prefix = "prob_",
                 values_to = "prob") %>%
    filter(actual_colour == name)

 #   predicted_colour actual_colour name    prob
 #   <chr>            <chr>         <chr>  <dbl>
 # 1 blue             green         green 0.0415
 # 2 green            green         green 0.848 
 # 3 blue             blue          blue  0.942 
 # 4 green            green         green 0.999 
 # 5 red              red           red   1     
 # 6 red              blue          blue  0.0323
 # 7 blue             blue          blue  0.969 
 # 8 green            green         green 0.939 
 # 9 red              green         green 0.0981
 #10 red              red           red   1.00  
库(tidyverse)
df%>%
枢轴长度(cols=以“prob”开始),
名称\u prefix=“prob”,
值_to=“prob”)%>%
过滤器(实际颜色==名称)
#预测颜色实际颜色名称问题
#                          
#1蓝绿色0.0415
#2绿色0.848
#3蓝色0.942
#4绿色0.999
#5红色1
#6红蓝0.0323
#7蓝色0.969
#8绿色0.939
#9红绿绿0.0981
#10红色1.00
使用,主要技巧是使用
names\u前缀
参数。如果您想去掉
name
列,只需在链的末尾添加
select(-name)

library(tidyverse)

df %>%
    pivot_longer(cols = starts_with("prob"),
                 names_prefix = "prob_",
                 values_to = "prob") %>%
    filter(actual_colour == name)

 #   predicted_colour actual_colour name    prob
 #   <chr>            <chr>         <chr>  <dbl>
 # 1 blue             green         green 0.0415
 # 2 green            green         green 0.848 
 # 3 blue             blue          blue  0.942 
 # 4 green            green         green 0.999 
 # 5 red              red           red   1     
 # 6 red              blue          blue  0.0323
 # 7 blue             blue          blue  0.969 
 # 8 green            green         green 0.939 
 # 9 red              green         green 0.0981
 #10 red              red           red   1.00  
库(tidyverse)
df%>%
枢轴长度(cols=以“prob”开始),
名称\u prefix=“prob”,
值_to=“prob”)%>%
过滤器(实际颜色==名称)
#预测颜色实际颜色名称问题
#                          
#1蓝绿色0.0415
#2绿色0.848
#3蓝色0.942
#4绿色0.999
#5红色1
#6红蓝0.0323
#7蓝色0.969
#8绿色0.939
#9红绿绿0.0981
#10红色1.00