由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - R question -- character variable recoding -- what's wrong???
相关主题
复杂分类变量recoding?有什么R function 可以推荐?
在R中ifelse如何运用于variable recoding?脑筋急转弯的面试题
关于recode data的问题,多谢。请问如何在R中写recursive function?
SAS data merge求助SAS里关于recode一问
想用first累计character的变量,可以吗?如何证明数据是伪造的?
请教一个关于有效sample size的问题[sas] how to recode these variables
也弱问一个SAS里面genotype/SNP variable recoding的问题SPSS 和 R 的问题
SAS 问题missing data question in R
相关话题的讨论汇总
话题: size话题: calc话题: num话题: large话题: small
进入Statistics版参与讨论
1 (共1页)
w****u
发帖数: 16
1
有一个小问题,应该非常straightforward的文本变量recoding成数值变量, 不知哪里
搞错了,请帮着看一下。
character变量dat.new$Size_Calc有4个values,分布如下:
> table(dat.new$Size_Calc)
Extra Large Large Medium Small
15 22 59 36
我想把它rocode成一个numerical变量:
> dat.new$size_num[dat.new$Size_Calc == "Small"] <- 1
> dat.new$size_num[dat.new$Size_Calc == "Medium"] <- 2
> dat.new$size_num[dat.new$Size_Calc == "Large"] <- 3
> dat.new$size_num[dat.new$Size_Calc == "Extra Large"] <- 4
为什么生成的变量dat.new$size_num没有任何数值?同样问题的是基本dat.new$City_
Type的indicator变量生成不了(ifelse(dat.new$City_Type=="Airport", 1, 0)),
什么原因????
================== 数据及程序如下 ==================
R image file:
https://docs.google.com/file/d/0B1q4C7PBzbjIWGg3b3M4eV9kd2c/edit?usp=sharing
> ls()
[1] "dat" "dat.new" "temp"
> table(dat.new$Size_Calc)
Extra Large Large Medium Small
15 22 59 36
> dat.new$size_num[dat.new$Size_Calc == "Small"] <- 1
> dat.new$size_num[dat.new$Size_Calc == "Medium"] <- 2
> dat.new$size_num[dat.new$Size_Calc == "Large"] <- 3
> dat.new$size_num[dat.new$Size_Calc == "Extra Large"] <- 4
> table(dat.new$size_num)
character(0)
> dat.new$city_airport_ind <- ifelse(dat.new$City_Type=="Airport", 1, 0)
> table(dat.new$city_airport_ind)
0
132
D**u
发帖数: 288
2
我没有运行结果
你先试试
dat.new[dat.new$Size_Calc == "Small","size_num"] <- 1
k*******a
发帖数: 772
3
检查下那些字符里面有没有 leading space
P*******a
发帖数: 25
4
出问题的原因是字符有空格:
> levels(dat.new$Size_Calc)
[1] " Extra Large " " Large " " Medium " " Small "
一个偷懒的方法是直接把 factor 变成数字:
> size_num <- as.numeric(dat.new$Size_Calc)
> size_num
[1] 4 4 4 4 4 4 4 3 3 4 3 4 3 4 4 4 3 4 4 4 4 3 4 4 4 3 3 2 2 4 2 4 3 3 3
3 3 1 3 3 4 2 2 2 2 3 4 3
[49] 4 3 3 2 3 4 3 2 1 4 3 3 1 3 3 3 3 2 3 1 2 4 2 2 3 2 3 3 3 3 3 3 1 3 3
3 2 2 3 3 3 1 1 3 1 2 1 4
[97] 2 4 1 3 4 4 3 1 3 2 4 3 3 3 3 3 2 3 3 4 1 4 3 2 3 3 3 4 3 1 1 1 3 4 2
3
此时1到4是由 Extra Large 到 Small;需要把顺序倒过来。
> size_num <- abs(size_num-5)
> size_num
[1] 1 1 1 1 1 1 1 2 2 1 2 1 2 1 1 1 2 1 1 1 1 2 1 1 1 2 2 3 3 1 3 1 2 2 2
2 2 4 2 2 1 3 3 3 3 2 1 2
[49] 1 2 2 3 2 1 2 3 4 1 2 2 4 2 2 2 2 3 2 4 3 1 3 3 2 3 2 2 2 2 2 2 4 2 2
2 3 3 2 2 2 4 4 2 4 3 4 1
[97] 3 1 4 2 1 1 2 4 2 3 1 2 2 2 2 2 3 2 2 1 4 1 2 3 2 2 2 1 2 4 4 4 2 1 3
2
> dat.new$size_num <- size_num
w****u
发帖数: 16
5
果然是有leading space ... R trim function (gdata package) does the trick.
thanks....

【在 k*******a 的大作中提到】
: 检查下那些字符里面有没有 leading space
1 (共1页)
进入Statistics版参与讨论
相关主题
missing data question in R想用first累计character的变量,可以吗?
请教一个SAS recode variable的问题吧请教一个关于有效sample size的问题
Help! A data step problem也弱问一个SAS里面genotype/SNP variable recoding的问题
SAS CODE HELP!SAS 问题
复杂分类变量recoding?有什么R function 可以推荐?
在R中ifelse如何运用于variable recoding?脑筋急转弯的面试题
关于recode data的问题,多谢。请问如何在R中写recursive function?
SAS data merge求助SAS里关于recode一问
相关话题的讨论汇总
话题: size话题: calc话题: num话题: large话题: small