2017-12-16 9 views
1

私は "confidence_table"という名前のチブルを持っています。 mutate動詞を使用して新しい列を追加しようとすると、これは機能しません。rep機能で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 

Iは、基地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、ドット): 列の自信は長さ6(グループサイズ)または1つ、ない12

でなければなりません

何が問題なのですか?

答えて

0

この場合、エラーメッセージは実際に問題がどこにあるかを把握するのに役立ちます。 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 

あなたはまた、しかし最初のINGのungroupせずにそれを行うことができます。

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)]) 

サンプルデータ:

confidence_table <- structure(list(Age = c(0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 
    0L, 1L), Condition = c("old", "old", "old", "old", "new", "new", 
    "new", "new", "lure", "lure", "lure", "lure"), Prop = c(0.73993056, 
    0.75590278, 0.15069444, 0.13090278, 0.06388889, 0.04965278, 0.05902778, 
    0.05416667, 0.23055556, 0.23645833, 0.13819444, 0.12013889)), .Names = c("Age", 
    "Condition", "Prop"), row.names = c(NA, -12L), class = c("grouped_df", 
    "tbl_df", "tbl", "data.frame"), vars = "Age", drop = TRUE, indices = list(
     c(0L, 2L, 4L, 6L, 8L, 10L), c(1L, 3L, 5L, 7L, 9L, 11L)), group_sizes = c(6L, 
    6L), biggest_group_size = 6L, labels = structure(list(Age = 0:1), row.names = c(NA, 
    -2L), class = "data.frame", vars = "Age", drop = TRUE, .Names = "Age")) 
関連する問題