1
私は1つの列7 1/4 INCHES
、1/4 INC
、9/16 INCH
、1 3/4 INCHES
、1 13/16 INCHES
、20 INCHES
などの不足している細胞と文字列で構成されています。データテーブルを持っています私は空白とINC/INCH/INCHES(文字列分割)を取り除き、残りの文字列を数値に変換して7+1/4=7.25
のようにしたいと考えています。評価文字列や空のセル
library(data.table)
data<-data.table(variable = c("", "", "7 1/4 INCHES", "1/4 INC", "9/16 INCH", "1 3/4 INCHES", "", "1 13/16 INCHES", "20 INCHES", "", ""))
#Assigning 0s to empty cells
data$variable[data$variable == "" ] = 0
#Getting rid of INCH, INCHES and INCH
data$variable<-gsub("[[:space:]][A-z]*$", "", data$variable)
#Adding "+" instead of whitespace (for summation), like 7+1/4 instead of 7 1/4
data$variable<-gsub(" ", "+", data$variable)
data$variable<-eval(parse(text=data$variable))
しかし、eval
を機能させることはできません。あなたはそれについて私を助けてくれますか? 第2に、この特定のコードは非常に効率的な方法ではないようです。私は非常に大きなデータセットを持っていますが、上記の小さな例のように、多くの観測結果を持つ4つの列があります。どのように物事を少し締めることができますか?
EDIT:
data$variable<-sapply(data$variable, function(x) eval(parse(text=x)))
私はそれが上記の行を使用して動作させます。しかし、それはまだ効率的な方法ではありません。
はどうもありがとうございましたこの種の問題にアプローチする方法をいくつか示しています!私はちょうど基本パッケージを使用することに焦点を合わせているので、私は見直しをしなかった。 1つの簡単な質問:この結果の列を保存する方法は?私はそれが騒ぎだと思う。私はその種のクラスではあまりよく経験していません。 –
@MustafaMuratARAT、 'data%>%'行を 'new_df <- data %>%'に変更し、結果を 'new_df'に保存します。標準のデータフレームに変換するには、 'new_df < - as.data.frame(new_df)'を実行します。 – markdly