[英]Convert characters like "84+3" into numeric variables using R
我有一個很大的data.frame
有幾個變量,如“89+2”(所有兩位整數 + 一位整數),我正在嘗試快速轉換為數字變量。 實際上,要么只是消除第二個數字,要么執行計算並將它們加在一起就行了……有點像 R 新手。 任何幫助表示贊賞。
例子:
df$LM = c("91+2", "89+3", "88+2")
尋找
df$LM_num = c(91, 89, 88)
或者
df$LM_num = c(93, 92, 90)
我們可以separate
使用
library(tidyr)
library(dplyr)
separate(df, LM, into = c("LM_num1", "LM_num2"), convert = TRUE) %>%
mutate(LM_num = LM_num1 + LM_num2)
或者使用parse_number
library(readr)
df$LM_num <- parse_number(df$LM)
或者另一個選項是eval(parse
df$LM_num <- sapply(df$LM, function(x) eval(parse(text = x)))
假設df
在最后的 Note 中可重復給出,請使用下面的第一行獲取第一個數字或第二行獲取總和。 他們都讀取LM
列,就好像它是一個文件拆分+
創建一個兩列數據框。 第一行提取第一列,而第二行添加兩列。 不使用任何包。
transform(df, LM_num = read.table(text = LM, sep = "+")[[1]])
transform(df, LM_num = rowSums(read.table(text = LM, sep = "+")))
df <- data.frame(LM = c("91+2", "89+3", "88+2"))
另一種選擇是:
x <- '92+3'
sum(as.numeric(strsplit(x, split = '+',fixed = TRUE)[[1]]))
如果有data.frame
:
df <- data.frame(LM = c("91+2", "89+3", "88+2"))
df$sum <- sapply(seq_len(nrow(df)),
function(i) sum(as.numeric(strsplit(df$LM, split = '+', fixed = TRUE)[[i]])))
# LM sum
# 1 91+2 93
# 2 89+3 92
# 3 88+2 90
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.