我试图通过基于标识符进行划分来改变数据.例如,我想mass在以下数据中进行变异.如果它是深度10,我想除以2.如果它是深度20,我想除以3.
day year depth mass
1 2008 10 13
2 2008 10 15
1 2008 20 14
2 2008 20 12
1 2009 10 14
2 2009 10 16
1 2009 20 12
2 2009 20 18
Run Code Online (Sandbox Code Playgroud)
分部导致:
day year depth mass
1 2008 10 6.5
1 2008 10 6.5
2 2008 10 7.5
2 2008 10 7.5
1 2008 20 4.6
1 2008 20 4.6
2 2008 20 4
2 2008 20 4
1 2009 10 7
1 2009 10 7
2 2009 10 8
2 2009 10 8
1 2009 20 4
1 2009 20 4
2 2009 20 6
2 2009 20 6
Run Code Online (Sandbox Code Playgroud)
我正在尝试ifelse以下方式,但得到一个错误"未使用的参数(c(13,15,14 ..)"
df%>%
group_by(day, year, depth) %>%
bind_rows(., .) %>%
mutate(mass = ifelse(depth == 10), mass/2,
ifelse(depth == 20), mass/3)%>%
arrange(day, year, depth, mass)
Run Code Online (Sandbox Code Playgroud)
我看到你使用的两个错误ifelse.在你所拥有的地方ifelse(depth == 10),你只给出了ifelse一个需要三个参数的论据.删除右括号,你有一个良好的开端.
您的第二个错误是,如果第二个ifelse条件解决,您没有说明该怎么做FALSE.在下面的代码中,我已经分配NA了这种情况.我不确定这是否是你想要的行为,所以你应该把它改成适合你需要的行为.
df%>%
group_by(day, year, depth) %>%
bind_rows(., .) %>%
mutate(mass = ifelse(test = (depth == 10),
yes = mass/2,
no = ifelse(test = (depth == 20),
yes = mass/3,
no = NA))) %>%
arrange(day, year, depth, mass)
Run Code Online (Sandbox Code Playgroud)
用法:
ifelse(test, yes, no)
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
ifelse(depth == 10, mass/2, ifelse(depth == 20, mass/3 , mass))
Run Code Online (Sandbox Code Playgroud)