簡體   English   中英

在 R 中組合 dataframe 向量的本機方式

[英]Native way to combine dataframe vectors in R

我想將幾個 dataframe 向量組合成一個向量。 通常我會使用一系列循環或其他東西來實現這一點,但我想知道在 R 中是否有更原生的方法來做到這一點?

這是我目前擁有的數據樣本:

| A | B | C | other_data |
|------------------------|
| X |   |   | "foo"      |
|------------------------|
|   |   | X | "bar"      |
|------------------------|
|   | X |   | "baz"      |
|------------------------|
| X |   |   | ":)"       |
--------------------------

a <- c("X", NA, NA, "X")
b <- c(NA, NA, "X", NA)
c <- c(NA, "X", NA, NA)
other_data <- c("foo", "bar", "baz", ":)")
df <- data.frame(a, b, c, other_data)

我想將 A、B 和 C 向量組合成一個向量,如下所示:

| Alphabet | other_data |
|-----------------------|
|    "A"   | "foo"      |
|-----------------------|
|    "C"   | "bar"      |
|-----------------------|
|    "B"   | "baz"      |
|-----------------------|
|    "A"   | ":)"       |
-------------------------

Alphabet <- c("A","C","B","A")
other_data <- c("foo", "bar", "baz", ":)")
df <- data.frame(Alphabet, other_data)

您可以將數據重塑為長格式刪除NA值。

library(dplyr)
library(tidyr)

df %>%
  pivot_longer(cols = a:c, 
               values_drop_na = TRUE, names_to = 'Alphabet') %>%
  select(-value)

# other_data Alphabet
#  <chr>      <chr>   
#1 foo        a       
#2 bar        c       
#3 baz        b       
#4 :)         a       

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM