簡體   English   中英

替換 R dataframe 中列的值

[英]Replacing values of a column in R dataframe

我有一個名為 C0001 的數據框,其中包含 31 個變量的 3671 個觀察值。 我想對一個名為 Y 的變量的每個值進行檢查。如果該變量的值大於 30,則將其替換為 30,否則保留現有值。 我在 R 中寫了以下內容,但它給了我一個錯誤:

  C0001 <- read.csv("C0001.csv")
  C0001$Y<- ifelse(C0001$Y > 30, 30, C0001$Y)

ans[npos] <- rep(no, length.out = len)[npos] 中的錯誤:替換長度為零另外:警告消息:在 rep(no, length.out = len) 中:'x' 是 NULL 所以結果將是 NULL

有人可以幫我解決我在這里犯的錯誤嗎? 是否有其他方法可以在不使用 ifelse 的情況下執行相同的操作?

謝謝

像這樣使用矢量化: C0001$Y <- C0001$Y[C0001$Y > 30]

嘗試用read.csv() read_csv()檢查您的核心工作目錄。 read_csv() function 將數據as a tibble tibble 導入 R ,而read.csv()導入常規的舊 R data frame 該錯誤表明您的輸入是 NULL 或長度為 0 的向量:確保索引正確。

library(readr)

C0001 <- read_csv("C:/Users/Desktop//C0001.csv")
C0001

> C0001
# A tibble: 6 x 3
      x     y     z
  <dbl> <dbl> <dbl>
1     2    40     4
2     3    12     5
3    45    12     6
4     1    50     7
5     1    50    30
6     1     0     0


C0001$y<- ifelse(C0001$y > 30, 30, C0001$y)
C0001

# A tibble: 6 x 3
      x     y     z
  <dbl> <dbl> <dbl>
1     2    30     4
2     3    12     5
3    45    12     6
4     1    30     7
5     1    30    30
6     1     0     0

數據樣本:

structure(list(x = c(2, 3, 45, 1, 1, 1), y = c(30, 12, 12, 30, 
30, 0), z = c(4, 5, 6, 7, 30, 0)), row.names = c(NA, -6L), spec = structure(list(
    cols = list(x = structure(list(), class = c("collector_double", 
    "collector")), y = structure(list(), class = c("collector_double", 
    "collector")), z = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1L), class = "col_spec"), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM