2016-09-06 24 views
0

JSONオブジェクトからの出力を受け取りますが、JSONは3つのフィールドを入力に応じて2倍にします。その結果、私はこのようになりますデータフレームを持っている:一致する条件に基づいてデータフレーム内の値をある列から別の列に移動

 mixed  score  type 
1   1 0.0183232 positive 
2 neutral  <NA>  <NA> 
3 -0.566558 negative  <NA> 
4 0.473484 positive  <NA> 
5 0.856743 positive  <NA> 
6 -0.422655 negative  <NA> 

混合の値を取ることができます-1と+1 タイプとの間に正または負の値を取ることができ、1つのまたは0 スコアの値を取ることができますいずれか正、負または中性

私は、彼らが

 mixed  score  type 
1   1 0.018323 positive 
2  <NA> <NA>  neutral 
3  <NA> -0.566558 negative  
4  <NA> 0.473484 positive  
5  <NA> 0.856743 positive  
6  <NA> -0.422655 negative 
+0

JSONオブジェクトからdata.frameをどのように作成していますか? [jsonlite](https://cran.r-project.org/web/packages/jsonlite/index.html)を見ましたか? – Tutuchan

+0

リターンが主に非決定的であるので、入力に応じて、JSONは「「正」またはこの$ docSentiment タイプ のようなもの」中立例$ docSentiment スコアタイプ 「0.856743」の三つの値まで戻ります。出力はAlchemy APIからです –

+0

@Tutochanはいjsonliteを使用してオブジェクトへの出力に戻ります:response_json_temp

答えて

0

全然エレガントなソリューションが、最高のすなわち正しい列になるように、私はdata.frame中の値を並べ替えることができますどのように思ったんだけど私は思いつくことができた。

### Seeds initial Dataframe 


mixed = c("1", "neutral", "0.473484", "-0.566558", "0.856743", "-0.422655", "-0.692675") 
score = c("0.0183232", "0", "positive", "negative", "positive", "negative", "negative") 
type = c("positive", "0", "0", "0", "0", "0", "0") 

df = data.frame(mixed, score, type) 


# Create a new DF (3 cols by nrow ize) for output 
df <- as.data.frame(matrix(0, ncol = 3, nrow = i)) 
setnames(df, old=c("V1","V2", "V3"), new=c("mixed", "score", "type")) 
df 

# Create a 2nd new DF (3 cols by nrow ize) for output 
df.2 <- as.data.frame(matrix(0, ncol = 3, nrow = i)) 
setnames(df.2, old=c("V1","V2", "V3"), new=c("mixed", "score", "type")) 
df.2 




#Check each column cell by cell if it does copy it do the shadow dataframe 
# Set all <NA> values to Null 
df[is.na(df)] <- 0 



# Set interation length to column length 
l <- 51 

# Checked the mixed column for '1' and then copy it to the new frame 
for(l in 1:l) 

    if (df$mixed[l] == '1') 
    { 
    df.2$mixed[l] <-df$mixed[l] 
    } 

# Checked the mixed column for a value which is less than 1 and then copy it to the score column in the new frame 

for(l in 1:l) 

    if (df$mixed[l] < '1') 
    { 
    df.2$score[l] <-df$mixed[l] 
    } 

# Checked the mixed column for positive/negative/neutral and then copy it to the type column in the new frame 

for(l in 1:l) 

    if (df$mixed[l] == "positive" | df$mixed[l] == "negative" | df$mixed[l] == "neutral") 
    { 
    df.2$type[l] <-df$mixed[l] 
    } 


# Checked the score column for '1' and then copy it to mixed column in the new frame 
for(l in 1:l) 

    if (df$score[l] == '1') 
    { 
    df.2$mixed[l] <-df$score[l] 
    } 

# Checked the score column for a value which is less than 1 and then copy it to the score column in the new frame 

for(l in 1:l) 

    if (df$score[l] < '1') 
    { 
    df.2$score[l] <-df$score[l] 
    } 

# Checked the score column for positive/negative/neutral and then copy it to the type column in the new frame 

for(l in 1:l) 

    if (df$score[l] == "positive" | df$score[l] == "negative" | df$score[l] == "neutral") 
    { 
    df.2$type[l] <-df$score[l] 
    } 



# Checked the type column for '1' and then copy it to mixed column in the new frame **This one works*** 
for(l in 1:l) 

    if (df$type[l] == '1') 
    { 
    df.2$mixed[l] <-df$type[l] 
    } 

# Checked the type column for a value which is less than 1 and then copy it to the score column in the new frame ** this one is erasing data in the new frame** 

for(l in 1:l) 

    if (df$type[l] < '1') 
    { 
    df.2$score[l] <-df$type[l] 
    } 

# Checked the type column for positive/negative/neutral and then copy it to the type column in the new frame **This one works*** 

for(l in 1:l) 

    if (df$type[l] == "positive" | df$type[l] == "negative" | df$type[l] == "neutral") 
    { 
    df.2$type[l] <-df$type[l] 
    } 
関連する問題