首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果变量持有某个值,则打印出另一个变量的值。

如果变量持有某个值,则打印出另一个变量的值。
EN

Stack Overflow用户
提问于 2013-12-03 08:28:21
回答 3查看 45关注 0票数 0

我该怎么做:

代码语言:javascript
复制
  Method  Message             
Distance      123     
Color         Red 
Distance      545     
Color        Blue   
Distance      419     

至:

代码语言:javascript
复制
  Method  Message    Value   Pick         
Distance      123      123  
Color         Red             Red
Distance      545      545
Color        Blue            Blue
Distance      419      419 

来自SPSS,这是一个卑鄙的

代码语言:javascript
复制
IF  (Method  = "Distance") Value=Message. 
IF  (Method  = "Color") Pick=Message. 
EXECUTE.

但对于R,我就是无法摆脱SPSS的心态。我试过:

代码语言:javascript
复制
Value <- ifelse(df$Method == "Distance", df$Message, 0)

Pick <- ifelse(df$Method == "Color", df$Message, 0) 

不走运。

我可能被困在SPSS的心态里。任何帮助都会很好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-03 08:42:19

我想你的专栏是因素。在创建新列之前,尝试使用as.character将它们转换为字符列:

代码语言:javascript
复制
transform(df, Value = ifelse(Method == "Distance", as.character(Message), ""),
              Pick = ifelse(Method == "Color", as.character(Message), ""))

#     Method Message Value Pick
# 1 Distance     123   123     
# 2    Color     Red        Red
# 3 Distance     545   545     
# 4    Color    Blue       Blue
# 5 Distance     419   419   
票数 0
EN

Stack Overflow用户

发布于 2013-12-03 08:32:56

试试这个:

代码语言:javascript
复制
#dummy dataframe
df <- read.table(text="Method  Message             
                 Distance      123     
                 Color         Red 
                 Distance      545     
                 Color        Blue   
                 Distance      419", header=TRUE, as.is=TRUE)
#Add columns
df$Value <- ifelse(df$Method=="Distance", df$Message, "")
df$Pick <- ifelse(df$Method=="Color", df$Message, "")

#Output
df
#     Method Message Value Pick
# 1 Distance     123   123     
# 2    Color     Red        Red
# 3 Distance     545   545     
# 4    Color    Blue       Blue
# 5 Distance     419   419
票数 0
EN

Stack Overflow用户

发布于 2013-12-03 09:03:55

plyr怎么样?

代码语言:javascript
复制
require(plyr)
df<-data.frame(Method=rep(c("Distance","Color"),length.out=5),Message=c(123,"Red",545,"Blue",419))
df$Message<-as.character(df$Message) # convert factors to character type

ddply(df,
      .(Method,Message),
      transform,
      Value=ifelse(Method=="Distance",Message,""),
      Pick=ifelse(Method=="Color",Message,"")
      )

    Method Message Value Pick
1    Color    Blue       Blue
2    Color     Red        Red
3 Distance     123   123     
4 Distance     419   419     
5 Distance     545   545  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20346140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档