我正在尝试创建一个新列“ Dose”。剂量值取决于“时间”和“ ID”列的值。对于所有的时间值,它们都是168的倍数,应该有Dose值。 Dose的值进一步取决于“ ID”的值
我正在尝试使用If-else语句 enter image description here
答案 0 :(得分:0)
让我们考虑以下伪造数据集:
fake_data <- data.frame(Time = round(168 * sample(c(runif(10, 0, 10), sample(1:10, replace = TRUE)))),
ID = sample(50, 20))
当Dose
是168的倍数时,ID
和Time
之间的伪函数关系如下:
f <- function(x) 2 + 3 * x
然后,可以这样计算新列Dose
:
dplyr::mutate(fake_data, Dose = ifelse(Time %% 168 < 1, f(ID), NA))
请注意,这里我们假设Time
变量为整数。如果为两倍,则可能需要使用Time %% 168 < 1e-10
之类的条件。
答案 1 :(得分:0)
这可能对您有用。
样本数据:
public ActionResult SetState(int contentItemId, bool state) {
var contentItem = _contentManager.GetLatest(id);
if (contentItem == null) return HttpNotFound();
var field = contentItem
.Parts
.SelectMany(p => p.Fields)
.FirstOrDefault(f => f.Name == "State") as BooleanField;
if (field != null) {
field.Value = state;
}
return RedirectToAction("SomeAction");
}
time <- c(0,168, 336, 341,503,504,673,839,840,0,24,48,168, 0, 24, 48, 168, 336)
ID <- c(1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,3)
data <- data.frame(time, ID)
返回:
library(tidyverse)
data %>% mutate(dose = ifelse(data$time %% 168, "NA",
ifelse(data$ID == 1, 1,
ifelse(data$ID == 2, 5,
ifelse(data$ID == 3, 10, "NA")))))