如何从R中的现有列值创建新列

如何从R中的现有列值创建新列,r,dplyr,R,Dplyr,像这样的。提前感谢。使用库“dplyr”,您可以尝试以下内容: # A tibble: 10 x 9 trip_id start_location_Long start_location_Lat end_location_Long end_location_Lat start_time end_time from_vehicle_id <int> <dbl> <dbl

像这样的。提前感谢。

使用库“dplyr”,您可以尝试以下内容:

# A tibble: 10 x 9
   trip_id start_location_Long start_location_Lat end_location_Long end_location_Lat start_time end_time from_vehicle_id               
     <int>               <dbl>              <dbl>             <dbl>            <dbl> <chr>      <chr>    <chr>                        
        1                101.               13.7              101.             13.7 00:05:24   00:41:14 Zz3yE90z++QmTX2QO5dHI78IK/Q 
    44498                101.               13.9              101.             13.9 22:37:30   22:40:30 /+bx80f3gOoPMoFBsS+3xX6jpi8 
库(dplyr)
my.df%分组依据(车辆id,时间)%>%
总结(
结束时间=最后一次(时间),
结束位置横向=最后(位置横向)
结束位置长度=最后一个位置长度%>%
as.data.frame()
使用库“dplyr”,您可以尝试以下操作:

# A tibble: 10 x 9
   trip_id start_location_Long start_location_Lat end_location_Long end_location_Lat start_time end_time from_vehicle_id               
     <int>               <dbl>              <dbl>             <dbl>            <dbl> <chr>      <chr>    <chr>                        
        1                101.               13.7              101.             13.7 00:05:24   00:41:14 Zz3yE90z++QmTX2QO5dHI78IK/Q 
    44498                101.               13.9              101.             13.9 22:37:30   22:40:30 /+bx80f3gOoPMoFBsS+3xX6jpi8 
库(dplyr)
my.df%分组依据(车辆id,时间)%>%
总结(
结束时间=最后一次(时间),
结束位置横向=最后(位置横向)
结束位置长度=最后一个位置长度%>%
as.data.frame()
另一种方法是:

library(dplyr)

my.df <- my.df %>% group_by(vehicle_id, time) %>%
  summarise(
    end_time = last(time),
    end_location_lat = last(location_lat)
    end_location_lon = last(location_lon)) %>%
  as.data.frame()
my.df%>%
组员(行车id、车辆id)%>%
安排时间%>%
切片(c(1,n())%>%
变异(行=c(“开始”,“结束”)[行号())%>%
枢轴(值从=-c(车辆id、行程id)、名称从=行)
#一个tibble:2x10
#组别:行车id、车辆id[2]
车辆识别号行程识别号时间开始时间结束位置横向开始位置横向结束位置纵向开始位置纵向结束位置横向结束位置纵向结束位置纵向结束行横向结束行横向结束行横向结束
1 Zz3yE90z++QmTX2QO5dHI78IK/Q 1 00:05:24 00:20:14 13.7 13.7 101。101起始端
2/+bx80f3gOoPMoFBsS+3X6JPI8 44498 22:37:30 22:40:30 13.9 13.9 101。101起始端
另一种方法是:

library(dplyr)

my.df <- my.df %>% group_by(vehicle_id, time) %>%
  summarise(
    end_time = last(time),
    end_location_lat = last(location_lat)
    end_location_lon = last(location_lon)) %>%
  as.data.frame()
my.df%>%
组员(行车id、车辆id)%>%
安排时间%>%
切片(c(1,n())%>%
变异(行=c(“开始”,“结束”)[行号())%>%
枢轴(值从=-c(车辆id、行程id)、名称从=行)
#一个tibble:2x10
#组别:行车id、车辆id[2]
车辆识别号行程识别号时间开始时间结束位置横向开始位置横向结束位置纵向开始位置纵向结束位置横向结束位置纵向结束位置纵向结束行横向结束行横向结束行横向结束
1 Zz3yE90z++QmTX2QO5dHI78IK/Q 1 00:05:24 00:20:14 13.7 13.7 101。101起始端
2/+bx80f3gOoPMoFBsS+3X6JPI8 44498 22:37:30 22:40:30 13.9 13.9 101。101起始端

我们也可以在data.table中执行此操作,方法是首先获取第一个和最后一个元素,然后重塑:

my.df %>%
  group_by(trip_id, vehicle_id)%>%
  arrange(time)%>% 
  slice(c(1, n()))%>%
  mutate(row=c("start", "end")[row_number()]) %>%
  pivot_wider( values_from = -c(vehicle_id, trip_id), names_from=row)

  # A tibble: 2 x 10
# Groups:   trip_id, vehicle_id [2]
  vehicle_id                  trip_id time_start time_end location_lat_start location_lat_end location_lon_start location_lon_end row_start row_end
  <chr>                         <int> <chr>      <chr>                 <dbl>            <dbl>              <dbl>            <dbl> <chr>     <chr>  
1 Zz3yE90z++QmTX2QO5dHI78IK/Q       1 00:05:24   00:20:14               13.7             13.7               101.             101. start     end    
2 /+bx80f3gOoPMoFBsS+3xX6jpi8   44498 22:37:30   22:40:30               13.9             13.9               101.             101. start     end 

new_df我们也可以在data.table中执行此操作,方法是首先获取第一个和最后一个元素,然后重塑:

my.df %>%
  group_by(trip_id, vehicle_id)%>%
  arrange(time)%>% 
  slice(c(1, n()))%>%
  mutate(row=c("start", "end")[row_number()]) %>%
  pivot_wider( values_from = -c(vehicle_id, trip_id), names_from=row)

  # A tibble: 2 x 10
# Groups:   trip_id, vehicle_id [2]
  vehicle_id                  trip_id time_start time_end location_lat_start location_lat_end location_lon_start location_lon_end row_start row_end
  <chr>                         <int> <chr>      <chr>                 <dbl>            <dbl>              <dbl>            <dbl> <chr>     <chr>  
1 Zz3yE90z++QmTX2QO5dHI78IK/Q       1 00:05:24   00:20:14               13.7             13.7               101.             101. start     end    
2 /+bx80f3gOoPMoFBsS+3xX6jpi8   44498 22:37:30   22:40:30               13.9             13.9               101.             101. start     end 
new\u df