在一个变量中对多个观察结果进行分类,这样我就可以在新的列中对它们进行分类。如何缩短代码?在R
我正在寻找一种捷径或更少的劳动密集型方法,将某些观察值分组到同一个变量中,然后根据需要在新列中输出在一个变量中对多个观察结果进行分类,这样我就可以在新的列中对它们进行分类。如何缩短代码?在R,r,datatable,R,Datatable,我正在寻找一种捷径或更少的劳动密集型方法,将某些观察值分组到同一个变量中,然后根据需要在新列中输出 axa$type[axa$instrument_type == "CORPORATE BONDS" | axa$instrument_type == "GOVERNMENT BONDS"] <- 'BONDS' axa$type[axa$instrument_type == "FOREIGN CURRENCY"] <- 'Cash' axa$type[axa$instrument_ty
axa$type[axa$instrument_type == "CORPORATE BONDS" | axa$instrument_type == "GOVERNMENT BONDS"] <- 'BONDS'
axa$type[axa$instrument_type == "FOREIGN CURRENCY"] <- 'Cash'
axa$type[axa$instrument_type == "FUT-FIXED INCOME"] <- 'Derivatives'
axa$type[axa$instrument_type == "INTEREST RATE SWAP"] <- 'Derivatives'
axa$type[axa$instrument_type == "MUTUAL FUNDS"] <- 'Funds'
axa$type[axa$instrument_type == "SHORT TERMS"] <- 'Cash Equivalent'
axa$type[axa$instrument_type == "CMO"] <- 'Other Fi'
axa$type[axa$instrument_type == "NON-SECY ASSET STOCK"] <- 'Other'
axa$type[axa$instrument\u type==“CORPORATE BONDS”\124; axa$instrument\u type==“GOVERNMENT BONDS”]一个更简单的选择是创建一个键/值数据集对,然后进行联接。这是可扩展的,它只需要一个连接,而不需要多次执行=
和赋值
library(data.table)
keydat <- data.table(instrument_type = c("CORPORATE_BONDS", "FOREIGN_CURRENCY",
...), type = c("GOVERNMENT", "Cash",...))
setDT(axa)[keydat, type := i.type, on = .(instrument_type)]
库(data.table)
keydat不是很短,但是在dplyr
中使用case\u将使它更干净,并避免每次写入dataframe\u name$column\u name
。您可以使用%
中的%而不是
来比较仪器类型中的多个值
library(dplyr)
axa %>%
mutate(type = case_when(
instrument_type %in% c("CORPORATE BONDS","GOVERNMENT BONDS") ~ "BONDS",
instrument_type == "FOREIGN CURRENCY" ~ "Cash",
instrument_type %in% c("FUT-FIXED INCOME", "INTEREST RATE SWAP") ~ "Derivatives",
instrument_type == "MUTUAL FUNDS"~"Funds",
instrument_type == "SHORT TERMS" ~ "Cash Equivalent",
instrument_type == "CMO" ~"Other Fi",
instrument_type == "NON-SECY ASSET STOCK" ~"Other"))
如果对数据感兴趣。table
解决方案类似于案例(当数据中有fcase
时)。table
可在数据的开发版本中获得。table
如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的错误,那么就更容易帮助您solutions.btw,它的data.table
带有点,而不是datatable
。后者通常指的是DT
packagesorry我真的不明白这一点。它如何理解我希望它分配给什么,以及它如何覆盖一个输出的多个观察值?@Tykid15。您必须为每个键创建值,即c(“未来固定收益”、“利率掉期”)
和'c(“衍生品”、“衍生品”)即,要替换的每个元素的每一行。其思想是键是唯一的,而值可以相同。它可以工作,但不会在原始数据集上创建列。加载时仍然没有类型列。您知道可能发生这种情况的原因吗?@Tykid15是否将结果分配回?axa%mutate(类型=当(…..