我有一个看起来像这样的数据集:
Name. Position number.student? Married?
Bob. 0001. YES. NO.
Susan. 0002. YES. YES.
Mark. 0003. NO.NO
Becky.0004.NO.YES
Billy.0005.YES.YES
我需要它看起来像这样:
Bob. 0001. YES. NO.
Susan. 0002. YES. NO.
Susan.0002.NO.YES
Mark. 0003. NO.NO
Becky.0004.NO.YES
Billy.0005.YES.NO
Billy.0005.NO.YES
换句话说,我有多个列标题,其值为“是”和“否”。我需要为每个“是”分配一行,每个人都有多少必要的行,具体取决于他们拥有多少个“是”值。
如何在R中完成此操作?
答案 0 :(得分:0)
一种方法是获取长格式的数据,仅查看await
行,为每个async
创建一个序列列,并获取宽格式的数据,用{{1}填充空值}。
async.eachSeries(itemArr, async (item, loop) => {
await DB.count({ duration: item.duration, service: item.service}); working
// Adding more logic
});
但是,这会删除"YES"
具有两个Name
的值,这是@Walker Harrison建议的细微变化。
"NO"
数据
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = student:Married) %>%
filter(value == 'YES') %>%
group_by(Name) %>%
mutate(row = row_number()) %>%
pivot_wider(values_fill = "NO") %>%
select(-row)
# Name Positionnumber student Married
# <chr> <int> <chr> <chr>
#1 Bob 1 YES NO
#2 Susan 2 YES NO
#3 Susan 2 NO YES
#4 Becky 4 NO YES
#5 Billy 5 YES NO
#6 Billy 5 NO YES