Select rows from R DataFrame that contain both positive and negative values
In this article, we will be discussing how to select rows in the data frame that contains both positive and negative values in R Programming Language. Let’s take an example for better understanding.
Suppose you have the following data frame in R that contains multiple columns and rows. All rows contain negative values or positive values or maybe both as follows.
Dataframe in use:
| temp_1 | temp_2 | temp_3 | temp_4 | temp_5 |
---|---|---|---|---|---|
1. | -74 | 88 | 39 | -64 | -83 |
2. | -89 | 52 | 37 | -26 | -39 |
3. | 34 | -28 | -39 | -54 | -53 |
4. | -82 | -19 | -64 | -33 | -20 |
5. | -64 | 39 | -93 | -43 | -31 |
6. | 92 | 86 | 44 | 23 | 82 |
7. | -67 | -31 | 38 | 63 | -17 |
So, our task is to select only those rows which contain both positive and negative values. After selecting values, our data frame should look like this.
Expected output:
| temp_1 | temp_2 | temp_3 | temp_4 | temp_5 |
---|---|---|---|---|---|
1. | -74 | 88 | 39 | -64 | -83 |
2. | -89 | 52 | 37 | -26 | -39 |
3. | 34 | -28 | -39 | -54 | -53 |
5. | -64 | 39 | -93 | -43 | -31 |
7. | -67 | -31 | 38 | 63 | -17 |
We are going to take a subset of the data frame if and only there is any row that contains values greater than 0 and less than 0, otherwise, we will not consider it.
Syntax:
subset(x,(rowSums(sign(x)<0)>0) & (rowSums(sign(x)>0)>0))
Here, x is the data frame name.
Approach:
- Create dataset
- Apply subset()
- Select rows with both negative and positive values
- Display those rows
Example:
R
# To select rows in dataframe # that contains both positive and negative values # Creating dataset # creating fisrs column first <- c (-74,-89,34,-82,-64,92,-67) # creating second column second <- c (88,52,-28,-19,39,86,-31) # creating third column third <- c (39,37,-39,-64,-93,44,38) # creating fourth column fourth <- c (-64,-26,-54,-33,-43,23,63) # creating fifth column fifth <- c (-83,-39,-53,-20,-31,82,-17) # creating dataframe x <- data.frame (temp_1=first, temp_2=second,temp_3=third, temp_4=fourth,temp_5=fifth) # checking if there exist a row with # both positive and negative values subset (x,( rowSums ( sign (x)<0)>0) & ( rowSums ( sign (x)>0)>0)) |
Output:

Figure 1
Please Login to comment...