0

我得到了一组特别混乱的数据。其中有三列表示相同的因子变量 - focus1、focus2 和 focus3,其中每个数据观察可能包含多个焦点,但它们不是量度度量,即 focus1 中给出的焦点不一定是更强的焦点比focus2。我需要将这三个变量扩展为针对合并焦点变量的每个可能级别的指标变量。为此,我使用了下面的代码,昨天它在我的 PC 上运行良好,但我在办公室的 Mac 上工作,现在遇到了问题。

# Create focus variables
spr.focus<- y1 %>%
  gather(foc_num, focus, starts_with("focus")) %>%
  mutate(present = 1) %>%
  spread(focus, present, fill = 0)

# Reorder data on ID var while removing unnecessary columns
spr.focus <- spr.focus[order(spr.focus$tid), -c(34, 54)] 

# Group by ID var and summarise indicator variables to get one obs per ID
focusvars <- spr.focus %>%
  group_by(tid) %>% # tid is id var
  summarise_each(funs(sum), Arts:Unclear)

我遇到了两个问题:

  1. summarise_each 似乎已在 Mac 而不是 Windows 上过时?这里的答案似乎是使用 summarise_at。我可以使用相同的 x:y 符号来表示要汇总的列吗?这很重要,因为第一个索引和最后一个索引之间大约有 20-30 列。
  2. 由于某种原因,R 不再识别我在管道符号中引用的列名。我收到一个错误“ eval_bare(dot$expr, dot$env) 中的错误:找不到对象‘Arts’ ”。

我也很好奇,是什么导致了在 Windows 和 Mac 上操作之间的这些差异?我不得不想象它是包/RStudio 本身的不同版本,但它正在创造一个相当大的难题。

4

1 回答 1

0

在对 summarise_at 进行一些修改后,我找到了解决方案:

focusvars <- spr.focus %>%
  group_by(tid) %>% # tid is an id var
  summarise_at(vars(Arts:Unclear),funs(sum)) 

出于某种原因,它仍然会在边距中引发无法在范围内找到 colnames 的错误,但它会创建新的数据框。我会留下这个,以防这对其他人有帮助。

于 2017-07-13T20:05:59.270 回答