这是我的代码;
structure(list(VALUE = c(29.95, 1.48, 1, 39.28, 159.2, 68.3)), .Names = "VALUE", row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
dta_n4 <- dta_n3 %>%
mutate(VALUE_3 = ifelse(VALUE < 3, 1, 0)) %>%
mutate(VALUE_6 = ifelse(VALUE < 6, 1, 0)) %>%
mutate(VALUE_9 = ifelse(VALUE < 9, 1, 0)) %>%
mutate(VALUE_12 = ifelse(VALUE < 12, 1, 0)) %>%
mutate(V_VALUE_3 = VALUE_3 * 100) %>%
mutate(V_VALUE_6 = VALUE_6 * 100) %>%
mutate(V_VALUE_9 = VALUE_9 * 100) %>%
mutate(V_VALUE_12 = VALUE_12 * 100)
如何使用循环(3、6、9、12)制作“ VALUE_n”?
答案 0 :(得分:1)
在一次迭代中使用超快速for-set
,您可以执行以下操作:
library(data.table)
setDT(df). ## df is your data
cols <- c(3,6,9,12)
for(i in cols){
temp_col <- paste0('VALUE_', as.character(i))
set(x = df, j = temp_col, value = ifelse(df$VALUE < i, 1, 0))
set(x = df, j = paste0('V_', temp_col), value=df[[temp_col]]*100)
}
VALUE VALUE_3 V_VALUE_3 VALUE_6 V_VALUE_6 VALUE_9 V_VALUE_9 VALUE_12 V_VALUE_12
1: 29.95 0 0 0 0 0 0 0 0
2: 1.48 1 100 1 100 1 100 1 100
3: 1.00 1 100 1 100 1 100 1 100
4: 39.28 0 0 0 0 0 0 0 0
5: 159.20 0 0 0 0 0 0 0 0
6: 68.30 0 0 0 0 0 0 0 0