2016-04-26 14 views
2

データ「ABC」を以下のようであるならば - 私はExcelの数式のように見える「地域」という名前の新しい列を紹介したいセット/

Org_Region Dest_Region Org_City Dest_City 
WEST EAST BHI AAA 
NORTH WEST DEL BHI 
SOUTH EAST SHD AAA 
WEST NORTH BHI ABA 
NORTH NORTH DEL ABA 
SOUTH NORTH SHD ABA 
WEST NORTH BHI ABA 
WEST WEST BHI BHI 
NORTH SOUTH DEL ADB 
SOUTH SOUTH SHD ADB 
上記のデータで

、 -

IF(Org_City=Dest_City,"Same City",IF(Org_Region= Dest_Region,"Same Region","Rest")) 

私は、以下の構文をしてみてください - 私が手にエラーがある

abc$Region <- with(abc, ifelse(abc$Org_City == abc$Dest_City, "Same City", ifelse(abc$Org_Region == abc$Dest_Region, "Same Region", "Rest"))) 

を -

Ops.factor(ABC $ Org_City、ABC $ Dest_City)における

エラー: 要因のレベルのセットが異なる

+2

変換を使用最初に文字に戻し、もう一度やり直してください。 – Sotos

答えて

3
abc[] <- lapply(abc, as.character) 
with(abc, ifelse(Org_City == Dest_City, "Same City", 
           ifelse(Org_Region == Dest_Region, "Same Region", "Rest"))) 
# [1] "Rest"  "Rest"  "Rest"  "Rest"  
#  "Same Region" "Rest"  "Rest"  "Same City" "Rest"  "Same Region" 

側注です。

ifelse(as.character(abc$Org_City) == as.character(abc$Dest_City), 
     "Same City", 
     ifelse(as.character(abc$Org_Region) == as.character(abc$Dest_Region), 
       "Same Region", "Rest")) 
+1

私の答えよりも簡単に見える...質問に答えるうちに学ぶyay! –

+1

@DiegoAgherで学ぶには最高の方法は教えてください:) – zx8754

+0

ありがとうございました! :) – SushantG

1

を試してみてください:我々は要因を保持したい場合は、その後、with

を使用するときは、すべての変数のデータフレームを指定する必要はありません まず文字列に要因から変換:

dataframe$Org_Region = as.character(dataframe$Org_Region) 
dataframe$Dest_Region = as.character(dataframe$Dest_Region) 

次に関数を定義し、sapply

define_region <- function(org_city,dest_city){ 
if(org_city == des_city){ 
Region = "Same city" 
} else{ 
Region = "Rest"} 
} 
dataframe$Region = sapply(dataframe$org_city,define_region,dataframe$dest_city,USE.NAMES = FALSE)