我正在寻找一个函数,在这个函数中,我可以将我的数据分类为五个不同的行业,给出它们的SIC代码。
Permno SIC Industry
1 854
2 977
3 549
4 1231
5 3295
6 2000
7 1539
8 2549
9 3950
10 4758
11 4290
12 5498
13 5248
14 142
15 3209
16 2759
17 4859
18 2569
19 739
20 4529
可能是100-200至400-700之间的所有SICS应在工业1中,在300-350至980-1020之间的所有SICs应在工业2中,等等。
因此,简而言之-一个'If =或‘函数,我可以列出所有的SICs,可以匹配一个给定的行业谢谢!
发布于 2021-04-15 11:02:35
可以按数字添加带有筛选器的新列:
例如:
data$Group <- 0
data[data$SCIS < 1000, data$Group == 1]
data[data$SCIS >= 1000, data$Group == 2 ]
发布于 2021-04-15 11:02:48
floor
除以SIC
值后的值。
df$Industry <- floor(df$SIC/1000) + 1
df
# Permno SIC Industry
#1 1 854 1
#2 2 977 1
#3 3 549 1
#4 4 1231 2
#5 5 3295 4
#6 6 2000 3
#7 7 1539 2
#8 8 2549 3
#9 9 3950 4
#10 10 4758 5
#11 11 4290 5
#12 12 5498 6
#13 13 5248 6
#14 14 142 1
#15 15 3209 4
#16 16 2759 3
#17 17 4859 5
#18 18 2569 3
#19 19 739 1
#20 20 4529 5
如果无法以编程方式定义组,则可能需要单独定义范围。使用case_when
在dplyr
中这样做是很方便的。
library(dplyr)
df %>%
mutate(Industry = case_when(between(SIC, 100, 200) | between(SIC, 400, 700) ~ 'Industry 1',
between(SIC, 300, 350) | between(SIC, 980, 1020) ~ 'Industry 2'))
https://stackoverflow.com/questions/67107233
复制相似问题