p****e 发帖数: 165 | 1 data set 里有个叫做“dimension”的categorical variable, 里面有各个产品的尺寸
("XL", "LL", "M", "S", "SP") , 现在我想把这个“XL, LL"这两个尺寸合并为“L",
其他的尺寸保持不变,我想用ifelse这样做:
d$dimension_new <- ifelse(d$dimension == 'XL'| d$dimension == 'LL', 'L', d$
dimension)
可是当我列出新变量时,发现尺寸变成“1”,“2”, “3",如下:
>level(dimension_new)
"L" "1" "2" "3"
>head(d)看了一下,果然dimension_new变成"L" "1" "2" "3"
有没有什么办法在ifelse这一步就可以让新变量dimension_new变成:L, M, S, SP ?
我下面要用dimension_new在regression中,不想用"L" "1" "2" "3" ,这样
我还得一个个去校对他们所对应的真正尺寸。
向大牛们求教了! | a****r 发帖数: 1486 | 2 dm[dm %in% c("XL", "LL")] <- "L"
",
【在 p****e 的大作中提到】 : data set 里有个叫做“dimension”的categorical variable, 里面有各个产品的尺寸 : ("XL", "LL", "M", "S", "SP") , 现在我想把这个“XL, LL"这两个尺寸合并为“L", : 其他的尺寸保持不变,我想用ifelse这样做: : d$dimension_new <- ifelse(d$dimension == 'XL'| d$dimension == 'LL', 'L', d$ : dimension) : 可是当我列出新变量时,发现尺寸变成“1”,“2”, “3",如下: : >level(dimension_new) : "L" "1" "2" "3" : >head(d)看了一下,果然dimension_new变成"L" "1" "2" "3" : 有没有什么办法在ifelse这一步就可以让新变量dimension_new变成:L, M, S, SP ?
| p****e 发帖数: 165 | 3 谢谢回复。能展开写一下吗?%in%是什么意思?没见过R有这个符号啊~
data set叫做d, dimension是其中的一个field
你是指这个吗?但我运行了不行。。。
d$dimension_new[dimension == c("XL") | dimension == c("LL")] <- "L"
求指教,麻烦了!
【在 a****r 的大作中提到】 : dm[dm %in% c("XL", "LL")] <- "L" : : ",
| p****e 发帖数: 165 | 4 哦,我数据表是叫d, 所以你原来是 d[d %in% c("fixed_top", "fixed_bottom")] <-
"L"
我把dm看成dimension缩写了,就觉得怎么field name怎么可以这样表达。
运行上面那个替换命令后,我head(d)一下,没发现dimension里面“XL”“LL”被替换
成"L", 没有成功,能问一下这是为什么吗? 谢谢!
【在 a****r 的大作中提到】 : dm[dm %in% c("XL", "LL")] <- "L" : : ",
| a****r 发帖数: 1486 | 5 你就把dm换成d$dimension就对了
我就是懒得写那么长罢了。
-
【在 p****e 的大作中提到】 : 哦,我数据表是叫d, 所以你原来是 d[d %in% c("fixed_top", "fixed_bottom")] <- : "L" : 我把dm看成dimension缩写了,就觉得怎么field name怎么可以这样表达。 : 运行上面那个替换命令后,我head(d)一下,没发现dimension里面“XL”“LL”被替换 : 成"L", 没有成功,能问一下这是为什么吗? 谢谢!
| p****e 发帖数: 165 | 6 d[d$dimensioncode %in% c("XL", "LL")] <- "L"
这样虽然没报错,但dimensioncode原来"XL", "LL"的变成了“"
好像还是不对,为什么呢?
麻烦你了!
【在 a****r 的大作中提到】 : 你就把dm换成d$dimension就对了 : 我就是懒得写那么长罢了。 : : -
| D******n 发帖数: 2836 | 7 d$dimensioncode[d$dimensioncode %in% c("XL", "LL")] <- "L"
【在 p****e 的大作中提到】 : d[d$dimensioncode %in% c("XL", "LL")] <- "L" : 这样虽然没报错,但dimensioncode原来"XL", "LL"的变成了“" : 好像还是不对,为什么呢? : 麻烦你了!
| p****e 发帖数: 165 | 8 这样不行的,我运行后的error message:
Warning message:
In `[<-.factor`(`*tmp*`, d$dimensioncode %in% c("XL", "LL"), :
invalid factor level, NAs generated
运行“d[d$dimensioncode %in% c("XL", "LL")] <- "L" 就没有报错,但问题是
dimensioncode中符合"XL", "LL"的变成了""
【在 D******n 的大作中提到】 : d$dimensioncode[d$dimensioncode %in% c("XL", "LL")] <- "L"
| a***d 发帖数: 336 | 9 for the code to work, d$dimensioncode cannot be a factor variable. Run:
d$dimensioncode <- as.character(d$dimensioncode)
d$dimensioncode[d$dimensioncode %in% c("XL","LL")] <- "L"
if you really want to keep d$dimensioncode as a factor variable, run:
d$dimensioncode <- as.factor(d$dimensioncode)
【在 p****e 的大作中提到】 : 这样不行的,我运行后的error message: : Warning message: : In `[<-.factor`(`*tmp*`, d$dimensioncode %in% c("XL", "LL"), : : invalid factor level, NAs generated : 运行“d[d$dimensioncode %in% c("XL", "LL")] <- "L" 就没有报错,但问题是 : dimensioncode中符合"XL", "LL"的变成了""
| p****e 发帖数: 165 | 10 终于work了,原来是要转成character, 原先的是factor. aloud好厉害呀!
再追问一下,我不太理解为什么这里得用%in%, 而不可以用==
我如果没有保留部分原值,全部改,就可以用==了,比如把XL, LL, M, S, SP改成只
有两个level: L, S:
原先dimensioncode是factor,此时不改data type, 还是factor:
d$dimensioncode1 <- ifelse(d$dimensioncode == 'XL'| d$dimensioncode == 'LL',
"L", "S")
非常谢谢!
【在 a***d 的大作中提到】 : for the code to work, d$dimensioncode cannot be a factor variable. Run: : d$dimensioncode <- as.character(d$dimensioncode) : d$dimensioncode[d$dimensioncode %in% c("XL","LL")] <- "L" : if you really want to keep d$dimensioncode as a factor variable, run: : d$dimensioncode <- as.factor(d$dimensioncode)
| a***d 发帖数: 336 | 11 == works too.
dm %in% c("XL","LL") is the same as dm=="XL"|dm=="LL"
',
【在 p****e 的大作中提到】 : 终于work了,原来是要转成character, 原先的是factor. aloud好厉害呀! : 再追问一下,我不太理解为什么这里得用%in%, 而不可以用== : 我如果没有保留部分原值,全部改,就可以用==了,比如把XL, LL, M, S, SP改成只 : 有两个level: L, S: : 原先dimensioncode是factor,此时不改data type, 还是factor: : d$dimensioncode1 <- ifelse(d$dimensioncode == 'XL'| d$dimensioncode == 'LL', : "L", "S") : 非常谢谢!
|
|