[英]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.