我正在运行以下代码:
mydataframe <- mydataframe %>%
mutate(newVar1 = abs(as.numeric(CanBe1 == 0 & lead(var_id, default = 0) == (var_id + 1)) - 1)) %>%
group_by(pt, item) %>%
mutate(newVar2 = abs(as.numeric((CanBe2 == 0 & lag(var_id, default = 0) == (var_id - 1)) ) -1),
newVar2 = ifelse(lag(newVar1, default = 0) == 1, 1, newVar2))
但我收到错误:Error:expecting a string
。这是什么意思?究竟哪里应该有一个字符串?
以下是我所拥有的数据的几个例子,我希望:
pt item var_id CanBe1 CanBe2 newVar1 newVar2
1 9 2 0 0 0 1
1 9 3 0 0 0 0
1 9 4 1 0 0 0
1 9 5 0 0 1 0
1 9 7 0 0 0 1
1 9 8 1 0 1 0
1 9 10 0 1 0 1
1 9 11 0 0 0 0
1 9 12 1 0 1 0
1 9 2 1 0 0 1
我使用的变量是:
class(mydataframe$pt) = `factor` #even if I change this one to `character` the code doesn't work
class(mydataframe$item) = `character`
class(mydataframe$var_id) = `character`
class(mydataframe$CanBe1) = `numeric`
class(mydataframe$canBe2) = `numeric`
答案 0 :(得分:0)
var_id
目前是一个字符串。提前将其重新分类为数字将解决它。
mydataframe <- mydataframe %>%
mutate(var_id = as.numeric(var_id), #Switching from character to numeric
newVar1 = abs(as.numeric(CanBe1 == 0 & lead(var_id, default = 0) == (var_id + 1)) - 1)) %>%
group_by(pt, item) %>%
mutate(newVar2 = abs(as.numeric((CanBe2 == 0 & lag(var_id, default = 0) == (var_id - 1)) ) -1),
newVar2 = ifelse(lag(newVar1, default = 0) == 1, 1, newVar2))