Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何组合dplyr::mutate()和cut在一列中生成不同的因子级别_R_Dplyr_Factors - Fatal编程技术网

如何组合dplyr::mutate()和cut在一列中生成不同的因子级别

如何组合dplyr::mutate()和cut在一列中生成不同的因子级别,r,dplyr,factors,R,Dplyr,Factors,我想根据一个列的不同类别生成不同的因子级别,但是当我尝试以下操作时: 库(dplyr) 图书馆(tidyr) 库(rap)#开发工具::安装github(“romainfrancois/rap”) df% tidyr::nest(数据=-类别)%>% rap::rap(标签=~case\u当( 类别==“a”~切割(数据$value,c(0,3,6,10),标签=c(“类别数据标签 #> #>1A[3×1] #>2b[3×1] 由(v0.3.0)于2019年9月12日创建

我想根据一个列的不同类别生成不同的因子级别,但是当我尝试以下操作时:

库(dplyr)
图书馆(tidyr)
库(rap)#开发工具::安装github(“romainfrancois/rap”)
df%
tidyr::nest(数据=-类别)%>%
rap::rap(标签=~case\u当(
类别==“a”~切割(数据$value,c(0,3,6,10),标签=c(“<3”,“3-6”,“6”)),
类别==“b”~cut(数据$value,c(0,23,26,30),标签=c(“<23”,“23-26”,“26”))
)
)
#>`[#A tible:2 x 3中的警告
#>类别数据标签
#>           
#>1A[3×1]
#>2b[3×1]
由(v0.3.0)于2019年9月12日创建

对于第二类级别,我得到
NA

df %>% 
  unnest(labels)
#> # A tibble: 6 x 3
#>   category value labels
#>   <chr>    <dbl> <fct> 
#> 1 a            1 < 3   
#> 2 a            4 3 - 6 
#> 3 a            8 > 6   
#> 4 b           21 <NA>  
#> 5 b           24 <NA>  
#> 6 b           28 <NA>
df%>%
unnest(标签)
#>#tibble:6 x 3
#>类别值标签
#>         
#>1A<3
#>2 a 4 3-6
#>3 a 8>6
#>4 b 21
#>5 b 24
#>6 b 28
有人知道我如何根据不同的类别生成不同的级别吗

这是所需的输出:

#> # A tibble: 6 x 3
#>   category value labels
#>   <chr>    <dbl> <fct> 
#> 1 a            1 < 3   
#> 2 a            4 3 - 6 
#> 3 a            8 > 6   
#> 4 b           21 < 23  
#> 5 b           24 23 - 26  
#> 6 b           28 > 26
#>#tible:6 x 3
#>类别值标签
#>         
#>1A<3
#>2 a 4 3-6
#>3 a 8>6
#>4b21<23
#>5 b 24 23-26
#>6b 28>26
在()中使用基本R

df1 26
资料
df1在()中使用基本R

df1 26
资料
df1你可以做
df%>%mutate(标签=case_)当(类别==“a”和值<3~”<3),类别==“a”和值%c(3:6)~“3-6”,类别==“a”和值>6~”>6,类别==“b”和值<23~“<23”,类别==“b”%c(23:26)~“23-26”中的值%,类别==“b”&值>26~“>26”,为真~NA_字符()
。这是真的,但是我失去了因子。你为什么要对嵌套的数据这样做?这样做的好处是什么/你的计划是什么?因为我想保留每个类别上的因子级别。你可以做
df%>%mutate(lable=case\u when(category==“a”和value<3~”<3),category==“a”和value%在%c中(3:6)“3-6”,类别==“a”和值>6~”>6”,类别==“b”和值<23~“<23”,类别==“b”和值%在%c中(23:26)~“23-26”,类别==“b”和值>26~”>26“,真~NA_字符)
。这是真的,但我没有考虑因素。为什么要对嵌套的数据执行此操作?这有什么好处/你的计划?因为我想保留每个类别的因素级别
df1 <- within(df1, {
  labels[category == "a"] <- as.character(cut(value[category == "a"], 
                                              breaks=c(0, 3, 6, 10), 
                                              labels=c("< 3", "3 - 6", "> 6")))
  labels[category == "b"] <- as.character(cut(value[category == "b"], 
                                              breaks=c(0, 23, 26, 30), 
                                              labels=c("< 23", "23 - 26", "> 26")))
  labels <- as.factor(labels)
})
df1
# # A tibble: 6 x 3
#   category value labels 
#   <chr>    <dbl> <fct>  
# 1 a            1 < 3    
# 2 a            4 3 - 6  
# 3 a            8 > 6    
# 4 b           21 < 23   
# 5 b           24 23 - 26
# 6 b           28 > 26   
df1 <- structure(list(category = c("a", "a", "a", "b", "b", "b"), value = c(1, 
4, 8, 21, 24, 28)), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))