【发布时间】:2019-10-16 21:18:48
【问题描述】:
我还是 R 的新手,我遇到了一个问题。 我有一个包含原始数据的文件:
dfRawData <-
data.table(
"Model" = c(
"Car1",
"Car1",
"Car1",
"Car2",
"Car2",
"Car2",
"Car3",
"Car3",
"Car3"
),
"variable" = c(
"Metric1",
"Metric2",
"Metric3",
"Metric1",
"Metric2",
"Metric3",
"Metric1",
"Metric2",
"Metric3"
),
"valeur" = c(1, 2, 3, 4, 5, 6, 7, 8, 9)
)
我想根据汽车名称和指标对该数据表进行子集化。但是,我想避免使用 if 语句,因为我的代码已经很长了。据我了解, case_when 可能非常有用。 我知道子集数据表的公式是正确的,因为当我使用 if 语句时,它会返回我想要的。 然而,当我使用 case_when 时,出现以下错误:
Error in `[.data.frame`(x, i) : undefined columns selected
有人知道我做错了什么吗? 这是我的代码:
carName = 'Car1' ##Can be changed
dfCarMetric = case_when(
carName == 'Car1' ~ dfRawData[which(dfRawData[["Model"]] == carName &
dfRawData[["variable"]] %in% c("Metric1", "Metric2")), ],
carName == 'Car2' ~ dfRawData[which(dfRawData[["Model"]] %in% c("Car2", "Car3") &
dfRawData[["variable"]] == "Metric1"), ]
)
我想最后拥有这个:
carName = 'Car1'
dfCarMetric
Model variable valeur
1: Car1 Metric1 1
2: Car1 Metric2 2
carName = 'Car2'
dfCarMetric
Model variable valeur
4 Car2 Metric1 4
7 Car3 Metric1 7
非常感谢您的回答!!
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。请勿发布数据图片。我们无法复制/粘贴它进行测试。
-
请以纯文本形式包含您的数据的代表性样本 - see here for how。图片中的数据不能被其他用户复制/粘贴。