2016-07-09 4 views
-2
df1 <- data.frame(a=c("apple","computer,mouse","mac,pen","light"),b=c(2011,2012,2013,2014)) 

col1 <- rep(NA,4),df1<- (df1,col1) 

df1[i]の行は、Appleの場合、col1[i]私は(関数を使用する方法がわからないカラムは、「赤」「APPLE」は、別の列の値=

赤色であるように文字列がある場合s)を使用して文字列に一致させます。

+1

ここに質問される質問はありません。文を形成することができない単なる言葉の束。そして、地球上の何が 'col1 < - rep(NA、4)、df1 < - (df1、col1)'なのか? –

答えて

2

grepを使用して 'a'列の 'apple'を検索し、それを使用して 'col1'を更新することができます。

df1$col1[grep("apple", df1$a)] <- "red" 
df1 
#    a b col1 
#1   apple 2011 red 
#2 computer,mouse 2012 <NA> 
#3  mac,pen 2013 <NA> 
#4   light 2014 <NA> 

私はOPのコード

df1 <- cbind(df1, col1) 
+1

私はOPがcbindを使う代わりに間違いを犯したと思いました!しかし、素晴らしい答え、私は好きです:-) – Learner

1

はOPの入力は、以下の

df1<- structure(list(a = structure(c(1L, 2L, 4L, 3L), .Label = c("apple", 
"computer,mouse", "light", "mac,pen"), class = "factor"), b = c(2011, 
2012, 2013, 2014), col1 = c(NA, NA, NA, NA)), .Names = c("a", 
"b", "col1"), row.names = c(NA, -4L), class = "data.frame") 

可能なオプションは以下の

index <- which(df1$a == "apple") 
df1$col1[index] <- "red" 

> df1 
#    a b col1 
#1   apple 2011 red 
#2 computer,mouse 2012 <NA> 
#3  mac,pen 2013 <NA> 
#4   light 2014 <NA> 
であると仮定引き受けます
関連する問題