变异是否与rep函数一起工作?

时间:2017-12-16 11:34:53

标签: r dplyr rep

我有一个名为" confidence_table"的tibble。有谁知道为什么如果我尝试使用mutate动词添加新列,这不起作用?

# A tibble: 12 x 3
# Groups:   Age [2]
  Age   Condition       Prop
<fctr>    <fctr>      <dbl>
   0       old      0.73993056
   1       old      0.75590278
   0       old      0.15069444
   1       old      0.13090278
   0       new      0.06388889
   1       new      0.04965278
   0       new      0.05902778
   1       new      0.05416667
   0      lure      0.23055556
   1      lure      0.23645833
   0      lure      0.13819444
   1      lure      0.12013889

我在base r中使用了这个函数,它可以正常工作

confidence_table$Confidence <- as.factor(rep(c("HC", "LC"), times = 3, each = 2))

# A tibble: 12 x 4
# Groups:   Age [2]
 Age   Condition     Prop Confidence
<fctr>    <fctr>      <dbl>     <fctr>
  0       old      0.73993056     HC
  1       old      0.75590278     HC      
  0       old      0.15069444     LC
  1       old      0.13090278     LC
  0       new      0.06388889     HC
  1       new      0.04965278     HC
  0       new      0.05902778     LC
  1       new      0.05416667     LC
  0      lure      0.23055556     HC
  1      lure      0.23645833     HC
  0      lure      0.13819444     LC
  1      lure      0.12013889     LC
  

这是与基本r代码一起使用的预期输出。   但是,如果我使用:

confidence_table <- confidence_table %>%
                    mutate(Confidence = rep(c("HC", "LC"), times = 3, each = 2))
它说: mutate_impl(.data,dots)出错:   列置信度必须为长度6(组大小)或1,而不是12

它出了什么问题?

1 个答案:

答案 0 :(得分:0)

在这种情况下,错误消息实际上应该可以帮助您找出问题所在。请注意Derived Column

2 x 3 x 2 = 12

正如评论中所指出的,解决这个问题的一种方法是先confidence_table %>% mutate(Confidence = rep(c("HC", "LC"), times = 3, each = 2)) # Error in mutate_impl(.data, dots) : # Column `Confidence` must be length 6 (the group size) or one, not 12

ungroup

你也可以在没有confidence_table %>% ungroup() %>% mutate(Confidence = rep(c("HC", "LC"), times = 3, each = 2)) # # A tibble: 12 x 4 # Age Condition Prop Confidence # <int> <chr> <dbl> <chr> # 1 0 old 0.73993056 HC # 2 1 old 0.75590278 HC # 3 0 old 0.15069444 LC # 4 1 old 0.13090278 LC # 5 0 new 0.06388889 HC # 6 1 new 0.04965278 HC # 7 0 new 0.05902778 LC # 8 1 new 0.05416667 LC # 9 0 lure 0.23055556 HC # 10 1 lure 0.23645833 HC # 11 0 lure 0.13819444 LC # 12 1 lure 0.12013889 LC 的情况下首先执行此操作:

ungroup

另一种选择是分组&#34;条件&#34;相反 - 可能是这样的:

confidence_table %>% 
  mutate(Confidence = rep(c("HC", "LC"), times = 3)) # 2x3 = 6
# # A tibble: 12 x 4
# # Groups:   Age [2]
#      Age Condition       Prop Confidence
#    <int>     <chr>      <dbl>      <chr>
#  1     0       old 0.73993056         HC
#  2     1       old 0.75590278         HC
#  3     0       old 0.15069444         LC
#  4     1       old 0.13090278         LC
#  5     0       new 0.06388889         HC
#  6     1       new 0.04965278         HC
#  7     0       new 0.05902778         LC
#  8     1       new 0.05416667         LC
#  9     0      lure 0.23055556         HC
# 10     1      lure 0.23645833         HC
# 11     0      lure 0.13819444         LC
# 12     1      lure 0.12013889         LC

示例数据:

confidence_table %>% 
  group_by(Condition) %>% 
  mutate(Confidence = c("HC", "LC")[cumsum(Age == 0)])
相关问题