Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据现有数据添加新列_R - Fatal编程技术网

R 根据现有数据添加新列

R 根据现有数据添加新列,r,R,我有一个数据看起来是这样的 df 现在,我想根据如下所示的值添加一个新列 --------------------------- id value from to --------------------------- 1 a a e --------------------------- 1 b a e ----------------------

我有一个数据看起来是这样的

df

现在,我想根据如下所示的值添加一个新列

    ---------------------------
    id      value   from    to
    ---------------------------
    1       a       a       e
    ---------------------------
    1       b       a       e
    ---------------------------
    1       c       a       e
    ---------------------------
    1       d       a       e
    ---------------------------
    1       e       a       e
    ---------------------------
    2       a       a       c
    ---------------------------
    2       b       a       c
    ---------------------------
    2       c       a       c
    ---------------------------

我不知道答案是否已经可用。如果答案已经可用,请向我提供链接,您可以使用
ave
,以及
head
(第一个)和
tail
(最后一个),即


您可以使用
ave
,以及
head
(第一个)和
tail
(最后一个),即


另一个使用dplyr的解决方案是:

library(dplyr)

df %>% 
group_by(id) %>%
mutate(from = first(value), to = last(value)) 

id  value     from   to
1      a      a      e
1      b      a      e
1      c      a      e
1      d      a      e
1      e      a      e
2      a      a      c
2      b      a      c
2      c      a      c

另一个使用dplyr的解决方案是:

library(dplyr)

df %>% 
group_by(id) %>%
mutate(from = first(value), to = last(value)) 

id  value     from   to
1      a      a      e
1      b      a      e
1      c      a      e
1      d      a      e
1      e      a      e
2      a      a      c
2      b      a      c
2      c      a      c

是的,我是在你编辑你的文章以包含dplyr位时写的,我想我从我的文章中删除了dplyr解决方案,这样你也可以保留你的。是的,我是在你编辑你的文章以包含dplyr位时写的,我想我从我的文章中删除了dplyr解决方案,这样你也可以保留你的。
library(data.table)

setDT(df)[, c('from', 'to') := list(data.table::first(value), data.table::last(value)), by = id][]
library(dplyr)

df %>% 
group_by(id) %>%
mutate(from = first(value), to = last(value)) 

id  value     from   to
1      a      a      e
1      b      a      e
1      c      a      e
1      d      a      e
1      e      a      e
2      a      a      c
2      b      a      c
2      c      a      c