gpt4 book ai didi

r - 根据列名是否在字符串向量中为多列赋值

转载 作者:行者123 更新时间:2023-12-02 02:39:49 25 4
gpt4 key购买 nike

<分区>

我正在尝试标记列名称是否出现在同一数据框中的字符串向量中。

例如,我有一个如下所示的数据框:

df1 <-  data.frame(ID = c('123', '234', '345', '456', '567')
, Types = c('A|B|C|D', 'A|B', 'D|B', 'B|D|C', 'D')
, A = NA
, B = NA
, C = NA
, D = NA)
df1
ID Types A B C D
1 123 A|B|C|D NA NA NA NA
2 234 A|B NA NA NA NA
3 345 D|B NA NA NA NA
4 456 B|D|C NA NA NA NA
5 567 D NA NA NA NA

我试图在其名称位于字符串“Types”中的每一列中放置一个 1,以便输出数据框看起来像

df2 <- data.frame(ID = c('123', '234', '345', '456', '567')
, Types = c('A|B|C|D', 'A|B', 'D|B', 'B|D|C', 'D')
, A = c(1,1,0,0,0)
, B = c(1,1,1,1,0)
, C = c(1,0,0,1,0)
, D = c(1,0,1,1,1))

df2
ID Types A B C D
1 123 A|B|C|D 1 1 1 1
2 234 A|B 1 1 0 0
3 345 D|B 0 1 0 1
4 456 B|D|C 0 1 1 1
5 567 D 0 0 0 1

我能够使用这个循环来做到这一点

for(j in 3:6)
{
for(i in 1:5)
{
df1[i,j] <- case_when(colnames(df1)[j] %like% df1[i,2] ~ 1, T ~ 0)
}
}

但我使用的实际数据框要大得多,所以这个循环非常慢。我正在寻求帮助,想出一种更有效的方法来做到这一点!

谢谢!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com