相关疑难解决方法(0)

用于多个类别的ifelse样式重新编码的习语

我经常遇到这种情况,我认为必须有一个很好的成语.假设我有一个包含一系列属性的data.frame,包括"product".我还有一把钥匙,可以将产品转化为品牌+尺寸.产品代码1-3是Tylenol,4-6是Advil,7-9是拜耳,10-12是Generic.

什么是最快的(就人类时间而言)编码方式?

ifelse如果有3个或更少的类别,我倾向于使用嵌套的;如果有超过3个类型,则键入数据表并将其合并.任何更好的想法?Stata有一个非常漂亮的recode命令,虽然我相信它会促进数据代码混合有点过分.

dat <- structure(list(product = c(11L, 11L, 9L, 9L, 6L, 1L, 11L, 5L, 
7L, 11L, 5L, 11L, 4L, 3L, 10L, 7L, 10L, 5L, 9L, 8L)), .Names = "product", row.names = c(NA, 
-20L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

r recode r-factor

17
推荐指数
6
解决办法
2519
查看次数

在R中的一个gsub()或chartr()语句中替换多个字符串?

我有一个包含字母[az],空格[]和撇号[']的字符串变量,例如.x <- "a'b c" 我想用blank []替换撇号['],并用下划线[_]替换space [].

x <- gsub("'", "", x)
x <- gsub(" ", "_", x)
Run Code Online (Sandbox Code Playgroud)

它绝对有效,但是当我有很多条件时,代码变得丑陋.因此,我想使用chartr(),但chartr()不能处理空白,例如.

x <- chartr("' ", "_", x) 
#Error in chartr("' ", "_", "a'b c") : 'old' is longer than 'new'
Run Code Online (Sandbox Code Playgroud)

有什么方法可以解决这个问题吗?谢谢!

string r gsub

13
推荐指数
5
解决办法
2万
查看次数

R数据表:左外连接

假设我有两个数据表:

X <- data.table(id = 1:5, L = letters[1:5])

   id L
1:  1 a
2:  2 b
3:  3 c
4:  4 d
5:  5 e

Y <- data.table(id = 3:5, L = c(NA, "g", "h"), N = c(10, NA, 12))

   id  L  N
1:  3 NA 10
2:  4  g NA
3:  5  h 12
Run Code Online (Sandbox Code Playgroud)

有没有可能做一个左外连接X,并Y通过id使用内置的功能的数据表?如果没有,我想构建一个leftOuterJoin具有以下预期输出的函数(例如):

leftOuterJoin(X, Y, on = "id")

   id  L  N
1:  1  a NA
2:  2  b …
Run Code Online (Sandbox Code Playgroud)

r data.table

3
推荐指数
1
解决办法
1886
查看次数

标签 统计

r ×3

data.table ×1

gsub ×1

r-factor ×1

recode ×1

string ×1