2016-08-25 33 views
0

を使用する変数の頻度に基づいてデータにフラグを付ける新しい列を作成したいとします。現在、フラグ列を追加する代わりに、これらの点を削除するコードがあります。他の列でyまたはnというように分けられている7200未満のレコードを持つデータにフラグを立てる必要があります。Rフラグを使用して新しい列を作成する

のようなこれらのreocordsを削除する私の現在のコード:

# Read in csv file 
data = read.csv(infile) 

# Create subset with only records marked 'y' 
data_y = subset(data,data$yn!= 'n') 

# Count the number of records per day, using table function 
valid = table(data_y$DATE) 

# Remove the records with less than 7200 records, and also marked 'y' from subset function 
df_cut = data_w[data_w$DATE_STAMP %in% names(valid)[valid>=7200],] 

# Save new cvs 
write.csv(df_cut,outpath) 

私は、これはどこから始めれば必ずそれらのレコードを無視するようにRを伝えなくてサブセットを使用するとは思わないだろうと仮定しています。

+3

でそれらを追加することができ、複数の条件を追加する必要がある場合は、 'subset'の主な機能は' parent_object $ 'で列を修飾する必要はありません。例えば ​​'サブセット(データ、y n!= 'n') 'である。 – nrussell

+0

'data $ flag = ave(data [、1]、data $ DATE、data $ yn、FUN = function(x)length(x)<7200)'のようなものです。これは '' flag "'という列を追加します。この列はDATE/YNの組み合わせごとに7200行未満のときTRUEになります。 – Gregor

答えて

0

ない

tmp <- data.frame(table(data$DATE)) 
tmp <- tmp[tmp$Freq < 7200,] 

data$flagColumn <- "n" 

for(i in 1:nrow(tmp)){ 
    data$flagColumn[data$DATE == tmp$Freq[i]] <- "y" 
} 

あなたが求めている正確に何をしてくださいますが...あなたが注意点として「&」

data$flagColumn[(data$DATE == tmp$Freq[i]]) & data$someOtherCol =="n"] <- "y" 
関連する問題