2016-08-02 16 views
0

我有一個像下面的數據幀中刪除第一X字符,在data.frame柱

DATA [1]

Price=100 
Price=200 
Price=300 

DATA [2]

Size=10 
Size=20 
Size=30 

什麼簡單的方法我可以刪除字符部分,然後直接進行計算。

我希望有結果,如:

100*10 
200*20 
300*30 
+3

所以......差不多這個? http://stackoverflow.com/questions/14543627/extracting-numbers-from-vectors-of-string 字符串是否不變? – Laterow

+1

'tidyr :: extract_numeric(DATA [,1])* tidyr :: extract_numeric(DATA [,2])' – Sumedh

回答

3
  1. 使用df$c1 <- gsub("Size=", "", df$c1)上兩列,以消除兩欄的字符
  2. 使用df$c1 <- as.numeric(as.character(df$c1))轉換到數字
  3. df$c3 <- df$c1*df$c2可能會工作或類似於乘以列並創建一個新的答案列
0

這是一個使用substring的解決方案,可以在每列的左側右移。

這裏假設您要剪切的部分(例如「Price =」)在一列內具有相同的長度,而末尾的數值長度可以變化(例如「100」或「1000000 「)。

# Create sample data 
d <- data.frame(column1=c("Price=100", "Price=200", "Price=300", "Price=400"), 
       column2=c("Size=10","Size=20","Size=30", "Size=40"), 
       stringsAsFactors=FALSE) 

# Transform and multiply columns 
d$result <- as.numeric(substring(d[,1], 7, nchar(d[,1]))) * 
      as.numeric(substring(d[,2], 6, nchar(d[,2]))) 

# Result 
# > d 
# column1  column2 result 
# 1 Price=100 Size=10 1000 
# 2 Price=200 Size=20 4000 
# 3 Price=300 Size=30 9000 
# 4 Price=400 Size=40 16000