2016-10-19 15 views
0

データフレームは以下のとおりです。私は、Var_1 .. Var_50というラベルの付いた、50以上の変数を持つデータセットを持っています。 50の変数の1つに国コード(英国または米国)があります。データフレームは、var_5 = "UK"の場合、var_4は常にストア番号を含みます。Rプログラミング:条件に基づいて前の列の値を抽出する

私が書きたいコードは - var_5 = UKの場合、country = "var_5"とstore = "var_4"です。ループをセットアップして、この50回コピー・ペーストする必要がないなら、それは素晴らしいでしょう!私が欲しいもの

ID Brand Var_1  Var_2  Var_3  Var_4  Var_5 
1 Soaps Supervisor Quantity StoreK UK   Owner 
2 Shampoo StoreZ  US   
3 Oil  Material StoreY  UK  Supplier 

は、データフレームの下に、これは私の質問を明確に

ID Brand Var_1  Var_2  Var_3  Var_4 Country StoreID 
1 Soaps Supervisor Quantity StoreK UK  UK   StoreK 
2 Shampoo StoreZ  US       US   StoreZ 
3 Oil  Material StoreY  UK     UK   StoreY 

希望です。

+1

データセットをフォーマットしてください。列がどこで終わり、新しい列が始まるかは明確ではありません。期待される出力 – akrun

答えて

0

国と店舗の情報が入っている列がすでにあるので、追加の列を作成して名前を変更する必要はありません。

the.data <- data.frame(Brand = c("Soap", "Oil", "Mail"), var1 = rnorm(3), var2 = c("store_K", "store_xs", "store_k"), var3 = c("UK", "AL", "USA")) 
# subset your data frame and select rows that are UK or US 
uk.data <- the.data[grep("UK|US", the.data$var3), ] 
# rename the columns 
colnames(uk.data)[3:4]<- c("Store", "Country") 
+0

IDブランド\t VAR_1 \t VAR_2 \t Var_3 \t var_4 1個の石鹸\tスーパーバイザ\t数量\t StoreK \t \t英国 2シャンプー\t StoreZ \t \t米国 3オイル\t材質\t階建てと一緒に例を示すように、 'dput'を使用します\t \t UK –

0

あなたは試みることができる:

data <- data.frame(ID = c(1,2,3), Brand = c("Soaps", "Shampoo", "Oil"), 
         Var_1 = c("Supervisor", "Storez", "Material"), 
         Var_2 = c("Quantity", "US", "StoreY"), 
         Var_3 = c("StoreK", "", "UK"), 
         Var_4 = c("UK", "", "")) 


tmp <- data.frame(t(apply(data, 1, function(x) { pos = grep("UK|US", x) 
               if (length(pos)) {c(x[pos], x[pos - 1])} 
               else { c("", "") } 
               }))) 

names(tmp) <- c("Country", "Store") 
data <- cbind(data, tmp) 
+0

こんにちは、お返事ありがとうございます。それは私に以下のエラーを与えます。 –

+0

エラー:警告メッセージ: '[.data.table'(out、、':= '(c( "Country"、 "Store")、as.data.table(tmp))): 2列値(12990未使用)のリスト(長さ12992)が割り当てられる –

+0

こんにちはsri、今すぐ試してみてください! – User2321

関連する問題