我该怎么做:
Method Message
Distance 123
Color Red
Distance 545
Color Blue
Distance 419 至:
Method Message Value Pick
Distance 123 123
Color Red Red
Distance 545 545
Color Blue Blue
Distance 419 419 来自SPSS,这是一个卑鄙的
IF (Method = "Distance") Value=Message.
IF (Method = "Color") Pick=Message.
EXECUTE.但对于R,我就是无法摆脱SPSS的心态。我试过:
Value <- ifelse(df$Method == "Distance", df$Message, 0)
Pick <- ifelse(df$Method == "Color", df$Message, 0) 不走运。
我可能被困在SPSS的心态里。任何帮助都会很好。
发布于 2013-12-03 08:42:19
我想你的专栏是因素。在创建新列之前,尝试使用as.character将它们转换为字符列:
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 发布于 2013-12-03 08:32:56
试试这个:
#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发布于 2013-12-03 09:03:55
plyr怎么样?
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 https://stackoverflow.com/questions/20346140
复制相似问题