我有一個資料框,它由各種變數和一個包含向量的特定列組成。是否有一些代碼可以將值替換為在列中找到的第一個向量?
| ID | 費用 |
|---|---|
| 1 | c(420,700) |
| 2 | 400 |
| 3 | c(200,720) |
所需的輸出:
| ID | 費用 |
|---|---|
| 1 | 420 |
| 2 | 400 |
| 3 | 200 |
uj5u.com熱心網友回復:
sapply您可以使用并提取第一個值來遍歷向量:
df$Fees <- sapply(df$Fees, "[[", 1)
uj5u.com熱心網友回復:
您可以使用map_dbl()frompurrr提取串列中每個元素的第 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")
uj5u.com熱心網友回復:
我們可以這樣做:
瓶頸就是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
uj5u.com熱心網友回復:
這是另一個使用mapandpluck提取向量中的第一項的選項:
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])
我們也可以使用pluckwith rowwise:
df %>%
rowwise %>%
mutate(Fees = pluck(Fees, 1))
或者我們可以跳過使用purrr和使用firstwith 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")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480605.html
上一篇:如何在熊貓餅圖中顯示值?
