[英]R How to subset a dataframe with a for loop through a column
我想基於特定因子列中的值創建一系列數據幀,這些數據幀是主數據幀的子集。
以下是我的數據和代碼:
>max_value_found
Group Mileage HiLo
1 car 808 Hi
2 train 162993 Lo
3 car 19386 Hi
4 walk 231 Lo
>levels(max_value_found$group)
[1] "car" "train" "bike" "walk"
>for(i in levels(max_value_found$group))
+{ x=paste(i,"_max_value",sep="")
+ x
+ x <-subset(max_value_found, max_value_found$group==i)
+}
>car_max_value
Error: object 'car_max_value' not found
就我使用ls()所知,我沒有收到錯誤,但也沒有任何新的數據幀。
我想做的是讓R遍歷級別列表,然后將級別名稱粘貼到結果數據框名稱中,並使用同一級別將主數據框作為子集數據框內容的子集。
我本可以手動寫出各個子集語句,但是想知道將來如何做。
我有類似的代碼用於遍歷同一列以生成一系列直方圖,但這讓我很困惑。
謝謝你的幫助
正如David在評論中指出的那樣:
max_value_found <- data.frame(Group = c("car", "train", "car", "walk"),
Mileage = c(808, 162993, 19386, 231),
HiLo = c("Hi", "Lo", "Hi", "Lo"))
> list1 <- split(max_value_found, max_value_found$Group)
> list1
$car
Group Mileage HiLo
1 car 808 Hi
3 car 19386 Hi
$train
Group Mileage HiLo
2 train 162993 Lo
$walk
Group Mileage HiLo
4 walk 231 Lo
編輯 :再次使用David的代碼將它們釋放到全局環境中:
> list2env(list1, .GlobalEnv)
<environment: R_GlobalEnv>
> ls()
[1] "car" "list1" "max_value_found" "train"
[5] "walk"
> str(car)
'data.frame': 2 obs. of 3 variables:
$ Group : Factor w/ 3 levels "car","train",..: 1 1
$ Mileage: num 808 19386
$ HiLo : Factor w/ 2 levels "Hi","Lo": 1 1
> str(train)
'data.frame': 1 obs. of 3 variables:
$ Group : Factor w/ 3 levels "car","train",..: 2
$ Mileage: num 162993
$ HiLo : Factor w/ 2 levels "Hi","Lo": 2
> car
Group Mileage HiLo
1 car 808 Hi
3 car 19386 Hi
> train
Group Mileage HiLo
2 train 162993 Lo
我認為這不是一個好舉動。 您最好從列表(即list1$car
或list1[["car"]]
訪問數據幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.