簡體   English   中英

將以逗號分隔的列值轉換為R中的數字矢量

[英]Convert column values separated by comma to a numeric vector in R

我有一個數據框“ dfx”,如下所示。 我需要將“ COUNTY_ID”中的值轉換為向量以提供功能。

dfx:

STATE   COUNTY_ID
KS      15,21,33,101
OH      133,51,12
TX      15,21,37,51,65

我已經將STATE轉換為如下所示的向量:

st = as.vector(as.character(dfx$STATE))

但是,我需要將"COUNTY_ID"列中的每一行轉換為數字/數字向量。 例如c(15,21,33,101)

如何在R中實現這一目標?

任何幫助表示贊賞。

cty_id <- lapply(strsplit(as.character(dfx$COUNTY_ID), ","), as.numeric)

DOES NOT work:
mclapply(cty_id[1], FUN = each_cty, st = st[1], mc.cores = detectCores() - 1) 

DOES works: 
mclapply(c(15,21,33,101), FUN = each_cty, st = st[1], mc.cores = detectCores() - 1) 

這是你所追求的嗎?

strsplit(as.character(dfx$COUNTY_ID), ",")
#[[1]]
#[1] "15"  "21"  "33"  "101"
#
#[[2]]
#[1] "133" "51"  "12"
#
#[[3]]
#[1] "15" "21" "37" "51" "65"

說明: strsplit(..., ",")分裂基於每個條目"," ,並將結果存儲在一個list特征向量的。

或獲取數字向量list

lapply(strsplit(as.character(dfx$COUNTY_ID), ","), as.numeric);
#[[1]]
#[1]  15  21  33 101
#
#[[2]]
#[1] 133  51  12
#
#[[3]]
#[1] 15 21 37 51 65

當KS具有County_id的四個不同值而OH只有三個值時,您如何處理示例數據中的情況? 如果您希望每個County_id獲得一列,並且在某些單元格中缺少值也可以,那么最簡單的方法是使用stringr::str_split_fixed()

> result <- stringr::str_split_fixed(dfx$COUNTY_ID, ",", n=5)
> result 
    [,1]  [,2] [,3] [,4]  [,5]
[1,] "15"  "21" "33" "101" ""  
[2,] "133" "51" "12" ""    ""  
[3,] "15"  "21" "37" "51"  "65"

請注意,您需要知道每行的County_id的最大數量,並將其作為上面的參數n 您可以保守一些,以后再刪除充滿NA的列。

您從中得到的是字符矩陣。 然后,您可以將其轉換為數字,如下所示: class(result) <- 'numeric' 之后, result矩陣的每一行都會為您提供目標向量,您可能必須將其包裝在na.omit() ,以確保僅得到數字。

暫無
暫無

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

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