我目前正在嘗試使用 mutate 將多個列添加到我的資料框中。
這是我開始的:
new_df <- old_df %>%
mutate(demo = c("audience 1", "audience 2")
這就是我想要發生的事情
game demo
1 audience 1
1 audience 2
2 audience 1
2 audience 2
然而,這只會導致錯誤。我知道這只是我不好的初學者語法,有人可以幫忙嗎?
uj5u.com熱心網友回復:
我假設您old_df只有行,并且您想為.demo的每個值添加game. 如果我做對了,您可以使用tidyr::expand_grid():
library(tidyr)
old_df <- data.frame(game = 1:2)
old_df %>%
expand_grid(demo = c("audience 1", "audience 2"))
#> # A tibble: 4 × 2
#> game demo
#> <int> <chr>
#> 1 1 audience 1
#> 2 1 audience 2
#> 3 2 audience 1
#> 4 2 audience 2
使用reprex v2.0.2創建于 2022-10-27
uj5u.com熱心網友回復:
讓我們從一個代表開始:
library(dplyr)
data("mtcars")
old_df = mtcars
new_df <- old_df %>%
mutate(demo = c("audience 1", "audience 2")
這失敗了,因為您缺少一個括號來關閉 mutate 呼叫:
Error: Incomplete expression:
new_df <- old_df %>%
mutate(demo = c("audience 1", "audience 2")
解決這個問題是不夠的,因為 mutate 需要一個與表相同長度(行數)的向量:
new_df <- old_df %>%
mutate(demo = c("audience 1", "audience 2"))
Error in mutate(., demo = c("audience 1", "audience 2")) :
? `demo` must be size 32 or 1, not 2.
我猜你希望它在所有行的觀眾 1 和 2 中回圈。請注意總行數是偶數而不是奇數:
pattern = c("audience 1", "audience 2")
new_df <- old_df %>%
mutate(demo = rep(pattern, length.out = nrow(old_df)))
new_df %>%
select(1:3, demo)
本質上,這會重復模式以填充 的長度length.out。希望這可以幫助!
uj5u.com熱心網友回復:
這里的答案很好,但我將把下面的解決方案放在這里,因為它很簡單,而且在處理資料時,我經常驚訝于仔細應用merge()base R 會有多么有用。
old_df <- data.frame(game = 1:2)
demo_df <- data.frame(demo = c("audience 1", "audience 2"))
merge(demo_df, old_df)
demo game
1 audience 1 1
2 audience 2 1
3 audience 1 2
4 audience 2 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522292.html
標籤:rtidyverse
上一篇:如果資料框包含其成員具有不同類的列,我如何根據它們的類過濾掉這些行?
下一篇:用字符和數字對列名進行排序
