我经常遇到这种情况,我认为必须有一个很好的成语.假设我有一个包含一系列属性的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) 我有一个包含字母[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)
有什么方法可以解决这个问题吗?谢谢!
假设我有两个数据表:
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)