我在 R 中对我的数据帧进行子集化时遇到问题。我正在尝试使用 for 循环(或任何替代方法)对我的数据进行子集化,其中它由“TNC_DESCRI”分隔
表格示例
但我得到的只是“真”、“假”。我使用其中一个土地覆盖类作为示例,但想对表中的所有土地覆盖类(总共 33 个类)执行此过程:
for (Values in TS.df[3]){
for (j in TS.df[3]=='Sedge meadow complex') {
print(j)
}}
[1] FALSE [1] FALSE [1] FALSE [1] FALSE [1] FALSE [1] FALSE [1] FALSE [1] FALSE
使用 dput(head(TS.df[1:10,]))
后这是我的数据框的样子:
`structure(list(**OBJECTID** = c(311L, 532L, 1307L, 1439L, 2726L,
2960L), **OBJECTID_12_13_14_15_16** = c(145L, 1L, 1L, 1L, 1L, 1L),
**TNC_DESCRI** = c("Water", "Spruce - fir / feathermoss forest",
"Spruce - fir / feathermoss forest", "Spruce - fir / feathermoss
forest",
"Spruce - fir / feathermoss forest", "Spruce - fir / feathermoss forest"
), **TNC_DESCRI_overlay** = c("Water", "Water", "Spruce - fir /
feathermoss forest",
"Spruce - fir / feathermoss forest", "Sedge meadow complex",
"Spruce - fir / feathermoss forest"), Conversion.1996.2017 = c("Water-
Water",
"Spruce - fir / feathermoss forest-Water", "Spruce - fir / feathermoss
forest-Spruce - fir / feathermoss forest",
"Spruce - fir / feathermoss forest-Spruce - fir / feathermoss forest",
"Spruce - fir / feathermoss forest-Sedge meadow complex",
"Spruce - fir / feathermoss forest-Spruce - fir / feathermoss forest"
), **Change.No.Change** = c("No Change", "Change", "No Change",
"No Change", "Change", "No Change"), **Edited_overlay** = c("",
"yes", "", "", "yes", ""), **Edit_Reason_overlay** = c("", "water not
land",
"", "", "wetland not upland", ""), **Map_Change_overlay** = c("",
"map", "", "", "map", ""), **Change_Reason_overlay** = c("",
"", "", "", "", ""), **Change_Reason_overlay.1** = c("No Change",
"No Change", "No Change", "No Change", "No Change", "No Change"
), **TCW** = c(NA, -494.21875, -494.21875, -494.21875, -494.21875,
-494.21875), **TCG** = c(NA, 1599.71875, 1599.71875, 1599.71875,
1599.71875, 1599.71875), **TCB** = c(NA, 2350.84375, 2350.84375,
2350.84375, 2350.84375, 2350.84375), **TCW_overlay** = c(NA,
NA, -341.84, -175.8, NA, -171), **TCG_overlay** = c(NA, NA, 1822.32,
1167.6, NA, 1600), **TCB_overlay** = c(NA, NA, 2299.68, 1594.6,
NA, 1939.5), **TCW_Difference** = c(NA, NA, 152.37875, 318.41875,
NA, 323.21875), **TCG_Difference** = c(NA, NA, 222.60125, -432.11875,
NA, 0.28125), **TCB_Difference ** = c(NA, NA, -51.1637500000002,
-756.24375, NA, -411.34375)), **row.names** = c(NA, 6L), class =
"data.frame")`
我要创建的是类似于下图的土地覆盖类别的子集,其中仅显示具有相同类别的行:
莎草草甸复合体示例
答案 0 :(得分:0)
我不确定我是否正确理解了这个问题... 您可以先通过
获取土地覆盖类别列表landcover_class = unique(TS.df$TNC_DESCRI)
然后在 for 循环中使用它
for(i in landcover_class){
TS.df[TS.df$TNC_DESCRI==i,]
}
然后你会得到每个土地覆盖类的子集数据框