簡體   English   中英

R數據幀-逐行將多列折疊為單個數值向量

[英]R dataframe - Collapse multiple columns into a single numeric vector, row-by-row

很抱歉,這是基本問題還是重復問題。 但是我一直在找幾個小時,徒勞無功。

我想在一個數據幀(例如100)中采用多個數字列,並將它們組合成一個我可以存儲在單個列中的單個數字向量。 我計划使用dplyr :: transmute()函數存儲結果並刪除原始的100列。 但是,這不是問題。 我的問題是讓操作遍歷數據幀中的每一行。 簡單地說,假設我正在使用mtcars數據框:

    as.numeric(mtcars[x,2:8])

會給我一個第x行第2列(cyl)至8(vs)的單一數值向量,然后可以將其存儲在新列中。 但是,我如何將其應用於數據框的所有32行而又不以32種方式(每行一次)鍵入呢?

(是的,我已經嘗試過“ apply”功能,但是我仍在學習R,因此可能無法確定正確的語法)

(同樣,我想我可以在for循環中完成此操作,但已經收集到這些通常在R中不受歡迎)

任何幫助將不勝感激,請嘗試保持溫柔!

您是否嘗試過tidyr的collect gather()函數? 這是文檔中的示例:

library(tidyr)

stocks <- data_frame(
  time = as.Date('2009-01-01') + 0:9,
  X = rnorm(10, 0, 1),
  Y = rnorm(10, 0, 2),
  Z = rnorm(10, 0, 4)
)

gather(stocks, stock, price, -time)
stocks %>% gather(stock, price, -time)

我不認為davo1979希望將其數據轉換為長格式,因此,我不認為tidyr :: gather是他想要的工具。

我認為,最接近他的問題的答案是

lapply(1:nrow(mtcars), function(x) as.numeric(mtcars[x,2:8]))

這會將每一行存儲為包含在列表中的數字矢量。

但是,davo1979重要的是要知道這些數據的最終目標是什么。 我問是因為一堆數字向量的理想結果是一種笨拙的方式來在R中處理和存儲數據。

暫無
暫無

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

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