【发布时间】:2018-11-25 06:17:58
【问题描述】:
我对 R 很陌生,我想做以下事情:
我有一个由ID, Col1, Col2, Col3 列组成的数据框。
df <- read.table(header = TRUE, stringsAsFactors = FALSE, text="
ID Col1 Col2 Col3
1 0 'Less than once a month' 0
2 Never 0 0
3 0 0 'Once a month'
")
我想将这3列合并为一列,如果其他列中有"Never"和0,则值为"Never",如果有"Once a month",其余为0,则"Once a month" 等等。所有列都是互斥的,这意味着在同一个 raw 中不能有 "Never" 和 "Once a month"。
//I tried to apply this loop:
for (val in df) {
if(df$Col1 == "Never" && df$Col2 == "0")
{
df$consolidated <- "Never"
} else (df$`Col1 == "0" && df$Col2 == "Less than once a month")
{
how_oft_purch_gr_pers$consolidated <- "Less than once a month"
}
}
我只想先计算两列,但它不起作用,因为合并列中的所有原始数据都填充了“每月少于一次”。
我希望它是这样的:
ID Col1 Col2 Col3 Consolidated
1 0 Less than once a month 0 Less than once a month
2 Never 0 0 Never
3 0 0 Once a month Once a month
任何提示我做错了什么?
提前谢谢你
【问题讨论】:
-
你能提供想要的输出吗?
-
您的
df有两行包含所有三个值,另外两行包含全零。 -
@乔狄更斯。首先,您需要转换数据框,然后您可以应用您的逻辑。
-
@Wimpel 我已经修改了帖子,希望它更有意义
-
@JoeDickens 看到我的编辑;重新格式化您的代码非常容易,以便其他人可以轻松地复制它
read.table(text = "...your data",...)
标签: r