簡體   English   中英

如何將兩個向量轉換成dataframe(寬格式)

[英]How to convert two vectors into dataframe (wide format)

我想將兩個向量轉換為寬格式 dataframe。第一個向量代表列名,第二個向量代表值。 這是我的可重現示例:

vector1<-c("Reply","Reshare","Like","Share","Search")
vector2<-c(2,1,0,4,3)

現在我想將這兩個向量轉換成寬格式 dataframe:

# A tibble: 1 x 5
   Reply Reshare  Like Share Search
   <dbl>   <dbl> <dbl> <dbl>  <dbl>
1     2       1     0     4      3

我找到了一些長格式的示例,但沒有找到寬格式的簡單解決方案。 誰能幫我?

您可以制作一個命名列表(例如使用setNames ),然后是as.data.frame

df <- as.data.frame(setNames(as.list(vector2), vector1))

請注意,它必須是一個列表:將命名向量轉換為data.frame時,R 會將值放入單獨的行而不是列中。

vector1<-c("Reply","Reshare","Like","Share","Search")
vector2<-c(2,1,0,4,3)

df <- data.frame(vector1, vector2)
df |> tidyr::pivot_wider(names_from = vector1, values_from = vector2)
#> # A tibble: 1 × 5
#>   Reply Reshare  Like Share Search
#>   <dbl>   <dbl> <dbl> <dbl>  <dbl>
#> 1     2       1     0     4      3

reprex package (v2.0.1) 創建於 2022-02-08

另一種解決方案,基於dplyr::bind_rows

library(dplyr)

vector1<-c("Reply","Reshare","Like","Share","Search")
vector2<-c(2,1,0,4,3)

names(vector2) <- vector1
bind_rows(vector2)

#> # A tibble: 1 × 5
#>   Reply Reshare  Like Share Search
#>   <dbl>   <dbl> <dbl> <dbl>  <dbl>
#> 1     2       1     0     4      3

我們可以使用map_dfcset_names

library(purrr)

set_names(map_dfc(vector2, ~.x), vector1)

# A tibble: 1 × 5
  Reply Reshare  Like Share Search
  <dbl>   <dbl> <dbl> <dbl>  <dbl>
1     2       1     0     4      3

另一種可能的解決方案:

library(dplyr)

data.frame(rbind(vector1, vector2)) %>%
  `colnames<-`(.[1, ]) %>%
  .[-1, ] %>% 
  `rownames<-`(NULL)

  Reply Reshare Like Share Search
1     2       1    0     4      3

暫無
暫無

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

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