我坚持如何开发一个整洁的解决方案,该解决方案将逐行查看是否在每一行中唯一满足条件。
具体来说,我有使用等级量表的调查回复数据。评分量表中的类别数可能因项目而异。我的数据格式很宽。
数据样本如下。
理想情况下,我想添加一个称为“ thresh_met”的列,该列基于每个项目的第一个或最后一个有效评分等级类别是否超过其阈值而编码为0/1。例如,对于“ Item_1”,由于Cat_1 == 33,因此“ thresh_met”的值将为1,这大于其阈值25。这与Item_2相对,“ Item_1”的值“ thresh_met” = 0,因为这两个值均不Cat_1或Cat_4的数量超过了其阈值22。
数据看起来像这样:
Items | Cat_1 | Cat_2 | Cat_3 | Cat_4 | Cat_5 | Percent_missing | flr_ceil |
Item_1 | 33 | 23 | 23 | 21 | 0 | 2 | 25 |
Item_2 | 20 | 30 | 20 | 10 | NA | 4 | 22 |
我到目前为止开发的代码如下。应该清楚我被困在哪里。在此代码中,我要使用的阈值被标记为“ flr_ceil”。
代码:
# load packages and create data
if(!require("pacman"))install.packages("pacman")
p_load(tidyverse, magrittr, mice)
sample_dat <- tibble(
Item_1 = sample(0:4, 100, replace = TRUE, prob = c(0.1, 0.2, 0.4, 0.2, 0.1)),
Item_2 = sample(0:4, 100, replace = TRUE, prob = c(0.4, 0.2, 0.05, 0.2, 0.15)),
Item_3 = sample(0:5, 100, replace = TRUE, prob = c(0.2, 0.2, 0.1, 0.2, 0.1, 0.2)),
Item_4 = sample(0:4, 100, replace = TRUE, prob = c(0.6, 0.1, 0.2, 0.05, 0.05))) %>%
mice::ampute(prop = .25) %$%
amp
# get the valid number of categories for each item
col_names <- colnames(sample_dat) # for sorting at end of the pipe
cat_counts <- sample_dat %>%
gather(key = Item, value = rating) %>%
group_by(Item, rating) %>%
summarise(
n = n()) %>%
group_by(Item) %>%
summarise(
flr_ceil = (1/n())*100
) %>%
arrange(match(Item, col_names))
sample_dat %>%
gather(key = Item, value = rating) %>%
group_by(Item, rating) %>%
summarise(
n = n()) %>%
mutate(
prop = (n/sum(n))*100
) %>%
select(Item, rating, prop) %>%
spread(rating, prop) %>%
arrange(match(Item, col_names)) %>%
left_join(cat_counts)
答案 0 :(得分:1)
下面的整理方法可能会有所帮助:
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
int finish = 0, longest=0, smallest=0, count =0;
char word[20], smallest_word[20], largest_word[20];
while (0 == finish)
{
printf("enter word:\t");
scanf("%s", word);
if (count == 0)
{
strcpy(smallest_word, word);
strcpy(largest_word, word);
count++;
continue; //To ensure in first time loop ends here
}
if (strcmp(word, smallest_word)<0)
strcpy(smallest_word, word);
else if (strcmp(word, largest_word) > 0)
strcpy(largest_word, word);
if (strlen(word) == 4)
{
finish++;
}
count++;
}
printf("smallest word: %s\n", smallest_word);
printf("largest word: %s\n", largest_word);
getch();
return 0;
}
转换为长格式,并且每个df
和Item
都使用一行Category
值删除行NA
分组并按Item
名称排列行Category
中的阈值您可以通过flr_ceil
或thresh_met
调用将新列df
添加回join
。
mutate
由reprex package(v0.3.0)
创建于2019-06-19