数据
我有一个数据框架,它由各种变量和一个特定的列组成,其中有一个向量。是否有一些代码来替换列中发现的第一个向量的值?
<表类>
ID
费用
tbody><<tr>1 c (420700) 2400 3 c (200720) 表类>
您可以使用sapply
遍历向量并提取第一个值:
df$Fees <- sapply(df$Fees, "[[", 1)
您可以从purrr
中使用map_dbl()
来提取列表中每个元素的第n个元素。
library(tidyverse)
df %>%
mutate(Fee1 = map_dbl(Fees, 1))
# # A tibble: 3 × 3
# ID Fees Fee1
# <int> <list> <dbl>
# 1 1 <dbl [2]> 420
# 2 2 <dbl [1]> 400
# 3 3 <dbl [2]> 200
数据
df <- structure(list(ID = 1:3, Fees = list(c(420, 700), 400, c(200, 720))),
row.names = c(NA, -3L), class = "data.frame")
我们可以这样做:
瓶颈是Fees
是list
。加上paste
,我们把它变成character
。然后我们使用parse_number
。这总是只提取第一个数字:
library(readr)
library(dplyr)
df %>%
mutate(Fees = parse_number(paste(Fees)))
ID Fees
1 1 420
2 2 400
3 3 200
下面是使用map
和pluck
提取向量中的第一项的另一个选项:
library(tidyverse)
df %>%
mutate(Fees = map_dbl(Fees, pluck, 1))
ID Fees
1 1 420
2 2 400
3 3 200
或者使用rowwise
和索引的另一个选项:
df %>%
rowwise %>%
mutate(Fees = Fees[1])
我们也可以使用pluck
和rowwise
:
df %>%
rowwise %>%
mutate(Fees = pluck(Fees, 1))
或者我们可以跳过purrr
使用first
和rowwise
:
df %>%
rowwise %>%
mutate(Fees = first(Fees))
df <- structure(list(ID = 1:3, Fees = list(c(420, 700), 400, c(200,
720))), row.names = c(NA, -3L), class = "data.frame")